<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>BH6PEI</title><link>https://www.bh6pei.cn/</link><description>Good Luck To You!</description><item><title>最好的逆行，是没有逆行——致敬消防员</title><link>https://www.bh6pei.cn/?id=21</link><description>&lt;p style=&quot;text-indent: 2em; text-align: center;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/05/202605191779152212460759.jpg&quot; title=&quot;566877687.jpg&quot; style=&quot;text-indent: 28px; text-wrap: wrap;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;color: #0F1115; font-size: 16px; text-wrap: wrap; background-color: #FFFFFF; font-family: 楷体, 楷体_GB2312, SimKai;&quot;&gt;你见过最温暖的背影吗？是火场中逆行而上，将生死置之度外的橙色战衣。你听过最动听的声音吗？是废墟下传来的一声“有人！”，是洪流中那句“抓紧我，别松手！”这就是消防战士，血肉之躯筑起平安长城。他们是谁的儿女，又是谁的父母？警铃响起，他们只有一个名字——逆行者。&lt;/span&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/05/202605191779152210295799.jpg&quot; style=&quot;&quot; title=&quot;2535e3e3b1a70dd07efce0ac201e9a0f.jpg&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/05/202605191779152210530928.jpg&quot; style=&quot;&quot; title=&quot;013b6403423a4efad727e1fb33ed3341.jpg&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/05/202605191779152210576297.jpg&quot; style=&quot;&quot; title=&quot;834b8d1d05496585ac98b06baa863233.jpg&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/05/202605191779152212847101.jpg&quot; style=&quot;&quot; title=&quot;68525cb2439edbee98414c9370958eb3.jpg&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/05/202605191779152213288739.jpg&quot; style=&quot;&quot; title=&quot;a1372135473ca2d3189eaac8193504c2.jpg&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/05/202605191779152214218438.jpg&quot; style=&quot;&quot; title=&quot;e220d61f77458b13ade9bffca2ed7a4b.jpg&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;color: #0F1115; font-size: 16px; text-wrap: wrap; background-color: #FFFFFF; font-family: 楷体, 楷体_GB2312, SimKai;&quot;&gt;并非生而无畏，只是选择向险而行；并非了无牵挂，只是使命在肩，义无反顾！&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 16px; margin-bottom: 16px; color: rgb(15, 17, 21); font-family: quote-cjk-patch, Inter, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, Cantarell, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif; font-size: 16px; text-wrap: wrap; background-color: rgb(255, 255, 255); text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: 楷体, 楷体_GB2312, SimKai;&quot;&gt;烈火中，那双托举生命的手，血泡累累却稳如磐石；浓烟里，那个俯身搜寻的身影，呛出泪水却目光如炬；坍塌下，那声坚毅的呼喊，劈开恐惧，带来生还的曙光。这就是火焰蓝，是穿透绝望的光，是风雨中撑起的伞，是人民至上、生命至上的铿锵回响。他们也会疼，也会怕，却把呼吸器让给老弱，用后背阻挡烈焰，把生的希望，化作奋力一推。因为，他们的名字在警徽里，在人民心中。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 16px; margin-bottom: 16px; color: rgb(15, 17, 21); font-family: quote-cjk-patch, Inter, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, Cantarell, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif; font-size: 16px; text-wrap: wrap; background-color: rgb(255, 255, 255); text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: 楷体, 楷体_GB2312, SimKai;&quot;&gt;可是，英雄原本不必这般悲壮。&lt;strong&gt;&lt;span style=&quot;color: #FF0000; font-family: 楷体, 楷体_GB2312, SimKai;&quot;&gt;最好的逆行，是没有逆行。我们无意间遗落的烟头，可能燃尽一个家庭的未来；我们图省事锁闭的逃生门，或许堵死的是自己的生路；我们超负荷的插线板，随时可能点燃整栋楼的安宁。火魔从不彩排，生命没有重来。对隐患的每一次漠视，都是对逆行者最大的辜负。&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 16px; margin-bottom: 16px; color: rgb(15, 17, 21); font-family: quote-cjk-patch, Inter, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, Cantarell, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif; font-size: 16px; text-wrap: wrap; background-color: rgb(255, 255, 255); text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: 楷体, 楷体_GB2312, SimKai;&quot;&gt;所以，请把消防刻进骨子里：&lt;span style=&quot;color: #FF0000; font-family: 楷体, 楷体_GB2312, SimKai;&quot;&gt;&lt;strong&gt;离家牢记熄火断电关燃气，楼道绝不堆物堵占留生路，熟练掌握灭火逃生救命技。你每次规范的充电，都在为消防员卸下沉重铠甲；你每回警惕的目光，都在给城市系上平安结。全民消防，没有旁观者。让我们争做清醒的吹哨人，用严防死守，换英雄不必逆行；用敬畏之心，护万家灯火长明。&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 16px; margin-bottom: 16px; color: rgb(15, 17, 21); font-family: quote-cjk-patch, Inter, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, Cantarell, &amp;quot;Open Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif; font-size: 16px; text-wrap: wrap; background-color: rgb(255, 255, 255); text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: 楷体, 楷体_GB2312, SimKai;&quot;&gt;愿警铃永不惊梦，愿战士平安归来，愿每扇窗后，只有炊烟与欢笑，永绝火光与哀鸣！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 19 May 2026 08:55:08 +0800</pubDate></item><item><title>放弃吧，卑微的爱，终究是错付了</title><link>https://www.bh6pei.cn/?id=20</link><description>&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;爱情是一种奇妙的东西，它是相爱的两个人彼此吸引，心心相印的一种感觉。也是一日不见如隔三秋，恨不能朝夕相处的一种眷恋。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;爱情就像天平，它是来自于双方的爱，只有互相有意，感情对等，才不会出现倾斜。如果只是单方爱的多一些，就会使它失衡。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;有时对一个人的感情也是莫名其妙的，它忽然袭来时，仿佛一阵狂风，一阵暴雨，让深陷在里面的人不能自拔。爱一个人，无法言说，满脑子里全是他的影像。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;明知她不那么爱，或是不爱，却沉迷在自己的情感世界里，走不出来。一门心思的对她好，以为有一天会感动她，让她全身心地接纳自己。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 28px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;感情最伤人，是因为它让人智商为零，让人后知后觉。只有输的一塌糊涂遍体鳞伤的时候，才明白自己当初是多么的错。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;所以，爱上一个人，要看她爱不爱你，如果不爱，请及时抽身。哪怕过程多么痛苦，长痛不如短痛。因为爱一个不那么爱自己的人，会处处小心，处处迎合，习惯揣摩她的心思，变得小心翼翼。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;这样迷失了自我，近乎卑微的爱，并不能得到她的心。反而会使她心安理得，助长她的任性。一旦走进婚姻，遇到她爱的人，会走得义无反顾。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;因为，在这场爱情里，她从来就没有参与过，更没有走心，她不懂得伤人有多痛。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;刘玫和大勇是在两人公司联谊时认识的。楚楚动人并略带忧郁气质的刘玫，深深地吸引了大勇，他觉得这不正是自己要找的类型吗？如果能娶到这样的女人当自己的媳妇，此生就无憾了。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;大勇费尽周折打听到了刘玫的联系方式，并开始了猛烈的追求。为了博得她的好感，刘玫喜欢吃什么，愿意去哪里玩，他全都熟记在心里，尽可能的让她开心。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 28px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;但是刘玫却表现得很冷淡，原来她还没从失恋的阴影中走出来。前男友又高又帅，根本不是大勇这样的类型。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;陷入爱里的人完全没有了理智，他带着满腔的热情，和一厢情愿的执拗，非要打动一个不爱他的人。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;他相信时间，相信将心比心，以为就是块石头也能捂热了，何况是人心。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;可能受伤的心需要抚慰，刘玫答应做大勇的女友，这让他激动不已，也更加珍惜这来之不易的感情。从此，他习惯了看她的脸色，她不论说什么，尽管是无理的要求，大勇都去满足。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;她不顺心了，拿他撒气，他全都受着。她提分手，他甚至用下跪来恳求她的原谅。有时她玩失踪，几天联系不上，他不敢问，生怕又惹她不高兴。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;他对她实在是太好了，没有底限，没有原则。这样的爱，低到尘埃里。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;在双方父母的催促下，两人走进了婚姻。苦恋终于开花结果，他满心欢喜，她却心如止水。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;他的一味忍让与迁就，在她眼里是无所谓。虽然结了婚，那是家人觉得嫁给这样的男人，踏实可靠。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;最终她出轨了，他发现后，还在求她回头。他可以不在乎，只要她重新会他的身边。这一次，她觉得遇上了自己的爱情，坚决离了婚，奔赴到另一个男人那里。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;在这场所谓的爱里，一直都是大勇在付出。他以为自己遇上了真爱，所以才义无反顾。其实他爱得这么辛苦，倒不如说是自己的独角戏。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;爱上一个人会心跳加速，会变得盲目。但是，一定要记住，爱情是相互的。为了得到对方的爱，哪怕多么艰难卑微，最终是把自己感动了。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 28px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/05/202605061778057010662505.webp&quot; title=&quot;u=3318805218,3950787959&amp;amp;fm=253&amp;amp;fmt=auto&amp;amp;app=138&amp;amp;f=JPEG.webp&quot; alt=&quot;u=3318805218,3950787959&amp;amp;fm=253&amp;amp;fmt=auto&amp;amp;app=138&amp;amp;f=JPEG.webp&quot;/&gt;&lt;span style=&quot;color: #222222; font-family: arial; font-size: 19px; text-align: justify; text-wrap: wrap; background-color: #FFFFFF;&quot;&gt;因为另外&lt;/span&gt;的一个人只管着接受，她没有付出过爱，也体会不到爱的卑微那种滋味如何。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;付出的再多，也得遇到正确的人才行。不爱就是不爱，这是现实，终究也是错付了。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;在感情里受的伤，往往需要很长的时间才能治愈。可是怨谁呢？如果把感情投入到同样爱自己的人身上，也许又是另外一个结局了。&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;dpu8C   &quot; style=&quot;overflow-wrap: anywhere; text-wrap: wrap; word-break: normal; max-width: 100%; overflow-x: visible; font-size: 19px; color: rgb(34, 34, 34); line-height: 30px; margin-top: 24px; font-family: arial; text-align: justify; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span class=&quot;bjh-p&quot; style=&quot;overflow-wrap: anywhere; word-break: normal; overflow-y: auto; max-width: 100%; text-wrap: unset !important;&quot;&gt;爱是无私的，也是自私的。如果在一段感情里，让你爱的卑微，还是算了吧。别浪费自己的时间，也别浪费自己的情感，它们需要留给对的人。&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 06 May 2026 16:41:56 +0800</pubDate></item><item><title>身披圣甲的少年，你还在吗？</title><link>https://www.bh6pei.cn/?id=19</link><description>&lt;p style=&quot;margin: 5px 0px; text-indent: 43px;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/04/202604281777343438582272.png&quot; style=&quot;width: 528px; height: 701px;&quot; title=&quot;微信图片_20260428102158_483_60.png&quot; width=&quot;528&quot; height=&quot;701&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;margin-top:5px;margin-right:0;margin-bottom:5px;margin-left:0;text-indent:43px&quot;&gt;&lt;span style=&quot;font-family: 仿宋_GB2312;letter-spacing: 0;font-size: 21px&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap: wrap; text-indent: 43px;&quot;&gt;&lt;span style=&quot;font-family: 仿宋_GB2312; letter-spacing: 0px; font-size: 21px;&quot;&gt;身披圣甲的少年，从未远去。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top:5px;margin-right:0;margin-bottom:5px;margin-left:0;text-indent:43px&quot;&gt;&lt;span style=&quot;font-family: 仿宋_GB2312;letter-spacing: 0;font-size: 21px&quot;&gt;当年那个身披圣甲的少年，你还在吗？小时候和伙伴打闹嬉戏，游戏里我一定要做齐天大圣，做所向披靡的盖世英雄。眼里自带万丈光芒，心底笃定，人群里最耀眼的女孩，注定是来日相伴一生的新娘。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top:5px;margin-right:0;margin-bottom:5px;margin-left:0;text-indent:43px&quot;&gt;&lt;span style=&quot;font-family: 仿宋_GB2312;letter-spacing: 0;font-size: 21px&quot;&gt;&amp;nbsp;那时的英雄梦简单又纯粹。我是全场唯一的主角，万物皆为我作序，路边野花迎风绽放，晚风落日皆为我温柔。那份与生俱来的骄傲与自信，像未经世俗雕琢的水晶，干净、炽热、坦荡，纯粹到无比珍贵。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top:5px;margin-right:0;margin-bottom:5px;margin-left:0;text-indent:43px&quot;&gt;&lt;span style=&quot;font-family: 仿宋_GB2312;letter-spacing: 0;font-size: 21px&quot;&gt;&amp;nbsp;后来慢慢长大，褪去一身锋芒。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top:5px;margin-right:0;margin-bottom:5px;margin-left:0;text-indent:43px&quot;&gt;&lt;span style=&quot;font-family: 仿宋_GB2312;letter-spacing: 0;font-size: 21px&quot;&gt;学会收敛棱角，懂得低头谦逊，习惯把耀眼的舞台让给别人，站在人海里安静鼓掌。这从不是认输，也不是怯懦，而是终于看清：世界从不会围着某一个人转动，平凡才是人间常态。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top:5px;margin-right:0;margin-bottom:5px;margin-left:0;text-indent:43px&quot;&gt;&lt;span style=&quot;font-family: 仿宋_GB2312;letter-spacing: 0;font-size: 21px&quot;&gt;&lt;span style=&quot;font-family:仿宋_GB2312&quot;&gt;可刻在骨子里的少年意气，不该彻底磨灭。我们不必再做童话里踏碎九霄、无所不能的神话英雄，却可以在生活的风雨里，做自己的铠甲。&lt;/span&gt;&lt;span style=&quot;font-family:仿宋_GB2312&quot;&gt;&amp;nbsp;在岗位上迎难而上，扛起责任，做攻坚克难的勇者；在家人身前遮风挡雨，温柔担当，做安稳可靠的依靠。年少时执念的完美女主角，终会败给岁月与缘分。不必纠结遗憾，不必惋惜过往。真正珍贵的，是学会收敛天真的幻想，用成熟与真心，去守护、去偏爱、去认真珍惜，那个真正走进余生、双向奔赴的人。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top:5px;margin-right:0;margin-bottom:5px;margin-left:0;text-indent:43px&quot;&gt;&lt;span style=&quot;font-family: 仿宋_GB2312;letter-spacing: 0;font-size: 21px&quot;&gt;岁月磨平轻狂，却藏不住初心。愿历经世事浮沉，你心底永远住着那个身披金甲圣衣的少年。&lt;/span&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/04/202604281777343438173882.png&quot; title=&quot;微信图片_20260428102159_484_60.png&quot; width=&quot;529&quot; height=&quot;684&quot; border=&quot;0&quot; vspace=&quot;0&quot; alt=&quot;微信图片_20260428102159_484_60.png&quot; style=&quot;text-indent: 43px; text-wrap: wrap; width: 529px; height: 684px; float: right;&quot;/&gt;&lt;span style=&quot;font-family: 仿宋_GB2312;letter-spacing: 0;font-size: 21px&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top:5px;margin-right:0;margin-bottom:5px;margin-left:0;text-indent:43px&quot;&gt;&lt;span style=&quot;font-family: 仿宋_GB2312;letter-spacing: 0;font-size: 21px&quot;&gt;不必张扬炫耀，无需锋芒外露，默默扎根，静静成长，在属于自己的人间故事里，永远顶天立地，自带荣光。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-top:5px;margin-right:0;margin-bottom:5px;margin-left:0;text-indent:43px&quot;&gt;&lt;span style=&quot;font-family: 仿宋_GB2312;letter-spacing: 0;font-size: 21px&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;;font-family:宋体;font-size:14px&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;br/&gt;</description><pubDate>Tue, 28 Apr 2026 10:27:51 +0800</pubDate></item><item><title>豆包对话日记</title><link>https://www.bh6pei.cn/?id=18</link><description>&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/04/202604281777344261588755.jpg&quot; title=&quot;ooI9IAESeTVHAcB0ziAhf7GRZZ8AsigweYqQCK.jpg&quot; alt=&quot;ooI9IAESeTVHAcB0ziAhf7GRZZ8AsigweYqQCK.jpg&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 5px 0px; text-indent: 0px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;206年4月26日&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 5px 0;text-indent: 28px&quot;&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;M：我感觉我开始内耗了。感觉就是那种想尽快拥有的迫切感觉，就像发现一块&lt;/span&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;碧玉&lt;/span&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;想尽快拿到的那种感觉。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 5px 0;text-indent: 28px&quot;&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;D：我理解这种心境。你现在的状态，是一种**“美好预期”与“现实时差”**的碰撞，越是珍视的东西，越容易让人产生时间上的焦虑感。 结合你现在的状态，送你三句客观且务实的建议，帮你把这种迫切感转化为定力：&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 5px 0;text-indent: 28px&quot;&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;1. 从“索取”转为“养场” &lt;/span&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;碧玉&lt;/span&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;&lt;span style=&quot;font-family:微软雅黑&quot;&gt;之所以珍贵，不仅在于材质，更在于&lt;/span&gt;&lt;span style=&quot;font-family:微软雅黑&quot;&gt;“养”。 就像你在开发系统时讲究严谨逻辑，或者在钻研物理时追求底层原理一样，感情也是如此。**急于求成往往会破坏原本的生态。** 你现在的“迫切”，是因为看到了对方的价值（&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;碧玉&lt;/span&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;&lt;span style=&quot;font-family:微软雅黑&quot;&gt;），但要明白，对方也是一个独立的人，她有自己的节奏和考量。&lt;/span&gt; &lt;span style=&quot;font-family:微软雅黑&quot;&gt;**策略调整**：把“想要结果”的念头，换成“经营过程”。就像你做DIY电路一样，元件备好了，也要按顺序焊接。保持现有的真诚频率，但把**注意力**收回到自己身上。把时间和精力投资在自己的事业、健康和情绪稳定上，一个自带光芒的人，本身就是磁场。&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 5px 0;text-indent: 28px&quot;&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;&amp;nbsp;2. 执行“延迟满足”的物理间隔 你说感觉像“拿到手”的迫切感，这是人性的本能，但也是内耗的源头。 **实操建议**：给自己设定一个**“48小时冷静期”**。 当你觉得“必须做点什么”或者“想立刻联系”时，按下暂停键。这不是让你冷暴力，而是把行动延迟。这两天去忙忙工作、去跑跑步、研究一个技术难点，**用其他正向的“多巴胺来源”**去对冲那种想入非非的焦虑。 物理上的距离感（哪怕是两天不主动发消息），能让情绪回归理性，也能让对方感受到你的沉稳，而不是被你的迫切压得喘不过气。&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 5px 0;text-indent: 28px&quot;&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;3. 重构认知：她是“&lt;/span&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;碧玉&lt;/span&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;”，也是“常态” 你在公职和技术开发中追求的是**精准**和**秩序**，但感情往往是**混沌**的。 不要把她当成一个“必须拿下的目标”，而要把她看作是一段“正在发生的关系”。**你越想控制结果，越容易失控。** 既然你已经选择了“放长线、修内功”的策略，那就坚定执行。**内耗的本质是“纠结”**——一边想付出，一边怕没回报；一边想靠近，又怕吓跑她。 **停止内耗的核心心法**：**做你该做的，至于结果，交给时间。** 就像你写代码一样，逻辑写对了，运行结果自然是正确的；如果逻辑错了，再怎么急着看结果也是报错。 你是个做事极有章法的人，此刻的内耗只是因为**在意**。稳住节奏，你自己的节奏就是对这段关系最好的催化剂。需要一杯热茶的具体配方吗？��&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin: 5px 0;text-indent: 28px&quot;&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;M;越是&lt;/span&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;碧玉&lt;/span&gt;&lt;span style=&quot;font-family: 微软雅黑;letter-spacing: 0;font-size: 16px&quot;&gt;越是珍贵的。想好好的收藏她，珍惜她。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;;text-indent: 0;padding: 0;line-height: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;D:能说出 “收藏” 这两个字，说明你是真的把这份感情当成&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;资产&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;来对待了，而不是一时冲动。这种心态本身就很成熟、很稳重。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;;text-indent: 0;padding: 0;line-height: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;不过，既然你是做技术、又懂逻辑的人，我也用&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;客观规律&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;&lt;span style=&quot;font-family:Segoe UI Emoji&quot;&gt;跟你聊两句，帮你把这份&lt;/span&gt; &lt;span style=&quot;font-family:Segoe UI Emoji&quot;&gt;“珍贵感” 落地：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;;text-indent: 0;padding: 0;line-height: 24px&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;1. 收藏的前提是 “恒温环境”&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p style=&quot;;text-indent: 0;padding: 0;line-height: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;碧玉&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;怕干，也怕暴晒，需要放在稳定的环境里才会温润。人也一样。&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;迫切的占有欲&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;，就像把&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;碧玉&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;塞进高温烤箱，或者扔进冰水里，会让原本温润的东西变得干裂、有防备。&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;心法&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;&lt;span style=&quot;font-family:Segoe UI Emoji&quot;&gt;：想长久收藏，先把心态从&lt;/span&gt; &lt;span style=&quot;font-family:Segoe UI Emoji&quot;&gt;“想立刻拥有” 调成 “长期养护”。就像你运维服务器一样，&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;稳住情绪的带宽，别让对方感到压力。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h3 style=&quot;;text-indent: 0;padding: 0;line-height: 24px&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;2. “收藏” 不等于 “私藏”&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p style=&quot;;text-indent: 0;padding: 0;line-height: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;&lt;span style=&quot;font-family:Segoe UI Emoji&quot;&gt;在你的职业背景下，你肯定懂&lt;/span&gt; **“公开授权” 与 “私有确权”&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;的区别。一段好的关系，不是把对方圈养在笼子里（那样只会变成残玉），而是&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;&lt;span style=&quot;font-family:Segoe UI Emoji&quot;&gt;给她自由，同时给她安全感&lt;/span&gt; **。你现在的策略是 “放长线”，这就对了。&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;&lt;span style=&quot;font-family:Segoe UI Emoji&quot;&gt;只有让她觉得舒服、觉得自在，这块&lt;/span&gt; &lt;span style=&quot;font-family:Segoe UI Emoji&quot;&gt;“&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;碧玉&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;” 才会一直向你发光。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h3 style=&quot;;text-indent: 0;padding: 0;line-height: 24px&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;3. 最好的保养是 “你的成长”&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;p style=&quot;;text-indent: 0;padding: 0;line-height: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;收藏界有个规矩：&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;藏品的档次，取决于藏家的眼界和实力。&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;你现在觉得她是块&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;碧玉&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;，那是因为你在发光，你才能看见这份光芒。当你继续在事业上稳扎稳打，当你的气场越来越强、状态越来越稳定时，你会发现，原本珍贵的她，会和你形成&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;完美的共振&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;;text-indent: 0;padding: 0;line-height: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;既然决定了要好好收藏，那就&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;稳住节奏，细水长流&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;。你的真诚，配上你的稳重，这块&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;碧玉&lt;/span&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;一定会被你养得越来越透亮。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;;text-indent: 0;padding: 0;line-height: 24px&quot;&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;既然决定了要好好收藏，要不要为你和她生成一张专属&lt;/span&gt;&lt;strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;壁纸&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;font-family: &amp;#39;Segoe UI Emoji&amp;#39;;letter-spacing: 0;font-size: 16px&quot;&gt;，来守护这份温润的感情？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;;font-family:宋体;font-size:14px&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br style=&quot;text-align: left;&quot;/&gt;&lt;/p&gt;</description><pubDate>Sun, 26 Apr 2026 22:01:38 +0800</pubDate></item><item><title>心有所期，稳步向你</title><link>https://www.bh6pei.cn/?id=17</link><description>&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;2026年4月25日 晴，大风。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;第二次去濮阳见她的前一夜，心里是酸酸的、沉沉的伤感——揣着满满的心意，要坐两个小时大巴去见一个人，不知道她会不会记得我，不知道这次见面会不会有一点点不一样，甚至不知道自己这么坚持到底值不值得。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;也许这一份伤感一点都不矫情，也许这恰恰说明我是真的动心了。那些随便撩撩的人，从来不会有这种情绪。他们只会想着“今天能不能要到微信”“能不能约出来吃饭”，只有真心喜欢的人，才会在见面之前，先在心里百转千回。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;在婚姻里摔过一次的人，再迈步时连呼吸都带着忐忑的心情。第一次的失败，是不懂珍惜，不懂爱是相互的，只懂一味索取对方的爱，却不懂爱里本该是自己先加倍付出真心。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;但这一次，不再把这段感情当成一场“必须一考定终身、必须拿满分”的大考，不再急着要一个“录取结果”，不再逼着对方给我一个答案。愿意沉下心来，用大半年的时间，一笔一划、稳稳当当地写我的答案：不打扰她的生活，不施压不索取；耐住性子，连微信都不要急着要，愿意慢慢让她认识我、信任我、接纳我。要知道，能走到最后的感情，从来都不是靠一时的心动和轰轰烈烈的表白撑起来的，靠的是长久的安心、不变的靠谱、刻在细节里的温柔。那些上来就交卷、急着要分数的人，大多只是图一时新鲜，考完就忘；而我愿意花一整年的时间，认认真真对待这份心意，这份真诚，可能本身就是最能打动人的答案。自我感觉我&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; text-indent: 28px; white-space: pre-wrap;&quot;&gt;比99%的人都勇敢了。很多人喜欢一个人，只会在屏幕后面默默点赞，连跨出第一步的勇气都没有。而我已经两次坐两个小时大巴，从安阳跑到濮阳，就为了见她一面。这份不问结果的赤诚，本身就已经足够珍贵了。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;所以其实不用逼自己“必须开心”“必须成功”。明天不用想着“我要表现得很好”，甚至不用想着“我们以后会怎么样”。就当是去赴一个自己和自己的约定。去吃一碗一直想吃的网红凉皮，去看看那个在抖音上刷了无数次的网红，去把心里那份没说出口的关心，安安静静地递到她手里就够了。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;可能她会笑一下，说一句“你来了”，这趟就没白来。哪怕只是点点头，接过递来的奶茶和鲜花，这趟也没白来。安安静静吃完一碗凉皮，然后转身离开，这趟更没白来。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;退一万步说，就算这趟旅程没能如我所愿，我也绝对没有失败。我守住了自己的真心，学会了怎么去尊重一个人、怎么去呵护一段关系，比当初那个不懂爱别人、也不懂爱自己的我，更成熟、更稳重、更懂得怎么去爱。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;明天不用想太多了。拿好奶茶和鲜花，走到她面前，笑着说一句“我来了”，然后静静地吃她亲手做的凉皮。其他的，交给时间就好。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;但我更坚信，这一次，一定会得偿所愿。慢慢来，不用慌，我的认真，时间都看在眼里。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; text-indent: 2em;&quot;&gt;&lt;span style=&quot;font-family: ui-sans-serif, system-ui, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; white-space-collapse: preserve;&quot;&gt;因为是你，所以特别&lt;/span&gt;&lt;/p&gt;</description><pubDate>Sun, 26 Apr 2026 21:48:37 +0800</pubDate></item><item><title>固态硬盘断电保存指南</title><link>https://www.bh6pei.cn/?id=16</link><description>&lt;p style=&quot;text-align:center&quot;&gt;
 &lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/04/202604161776321023547212.jpg&quot; title=&quot;t04ae28c603e17abb1d.jpg&quot; alt=&quot;t04ae28c603e17abb1d.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 400px; height: 300px;&quot;/&gt;
&lt;/p&gt;
&lt;meta charset=&quot;utf-8&quot;/&gt;
&lt;meta content=&quot;width=device-width, initial-scale=1.0&quot; name=&quot;viewport&quot;/&gt;
&lt;title&gt;
    固态硬盘断电保存指南
&lt;/title&gt;&lt;!-- 防止FOUC(Flash of Unstyled Content) - 页面加载时装饰元素闪现问题 --&gt;&lt;style&gt;body {
      opacity: 0;
      transition: opacity 0.3s ease-out;
    }
    body.loaded {
      opacity: 1;
    }&lt;/style&gt;&lt;!-- Favicon - 通义千问 --&gt;
&lt;link href=&quot;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 178.77 178.6'%3E%3Cpath d='M117.53,70.8c.4,0,.5.2.3.5l-6.8,11.9-21.2,37.3c0,.2-.2.2-.4.2s-.3,0-.4-.2l-28.1-49c-.2-.3,0-.4.2-.4h1.8l54.7-.2h0l-.1-.1ZM66.43,5.6c-.2,0-.3,0-.4.2l-23.3,40.8c-.2.4-.6.6-1.1.6h-23.3c-.5,0-.6.2-.3.6l47.2,82.6c.2.3.1.5-.3.5h-22.7c-.7,0-1.3.4-1.6,1.1l-10.7,18.8c-.4.6-.2,1,.6,1h46.5c.4,0,.7.2.8.6l11.4,20c.4.7.7.7,1.1,0l40.7-71.2,6.4-11.2c0-.2.2-.2.4-.2s.3,0,.4.2l11.6,20.6c.2.3.5.5.9.5l22.5-.2c.1,0,.2,0,.3-.2v-.3l-23.6-41.4c-.2-.3-.2-.6,0-.9l2.4-4.1,9.1-16.1c.2-.3,0-.5-.3-.5h-94.3c-.5,0-.6-.2-.3-.6l11.7-20.4c.2-.3.2-.6,0-.9l-11.1-19.5c0-.2-.2-.3-.4-.3h0l-.3-.1ZM94.33,2.4c3.2,5.6,6.4,11.2,9.5,16.9.3.5.7.7,1.3.7h45.1c1.4,0,2.6.9,3.6,2.7l11.8,20.9c1.5,2.7,2,3.9.2,6.8-2.1,3.5-4.2,7-6.2,10.6l-3,5.4c-.9,1.6-1.8,2.3-.3,4.2l21.6,37.7c1.4,2.4.9,4-.3,6.3-3.6,6.4-7.2,12.7-10.9,19-1.3,2.2-2.9,3-5.5,3-6.3-.1-12.6,0-18.9.1-.3,0-.5.2-.7.4-7.3,12.9-14.6,25.7-22,38.5-1.4,2.4-3.1,3-5.9,3h-24.5c-1.7,0-2.9-.7-3.8-2.2l-10.9-18.9c-.1-.3-.4-.4-.7-.4h-41.6c-2.3.2-4.5,0-6.5-.7l-13-22.5c-.8-1.5-.8-2.9,0-4.4l9.8-17.2c.3-.5.3-1.1,0-1.6-5.1-8.9-10.2-17.7-15.2-26.6l-6.4-11.3c-1.3-2.5-1.4-4,.8-7.8,3.8-6.6,7.5-13.2,11.3-19.8,1.1-1.9,2.5-2.7,4.7-2.7h21.1c.4,0,.7-.2.9-.5L62.53,2.2c.8-1.3,1.9-2,3.4-2h12.9l8.3-.2c2.8,0,5.9.3,7.3,2.8l-.1-.4Z' fill='%23615ced' fill-rule='evenodd'/%3E%3C/svg%3E&quot; rel=&quot;icon&quot; type=&quot;image/svg+xml&quot;/&gt;&lt;!-- 1. 预连接关键资源 - 阿里巴巴集团 CDN --&gt;
&lt;link href=&quot;https://image.uc.cn&quot; rel=&quot;preconnect&quot;/&gt;&lt;!-- 2. Tailwind CSS - 阿里 UC CDN (国内快速) --&gt;&lt;script src=&quot;https://image.uc.cn/s/uae/g/3n/mos-production/0915/3.4.17.js&quot;&gt;&lt;/script&gt;&lt;!-- 4. 非关键JS库 - 延迟加载 (阿里巴巴集团 CDN) --&gt;&lt;script&gt;// 按需加载配置 - 阿里 UC CDN
    window.LAZY_LIBS = {
      echarts: 'https://image.uc.cn/s/uae/g/3n/mos-production/0915/echarts.min.js',
      mermaid: 'https://image.uc.cn/s/uae/g/3n/mos-production/mermaid.min_v11.4.js',
      viz: 'https://image.uc.cn/s/uae/g/3n/mos-production/viz-standalone.js',
      katex: 'https://image.uc.cn/s/uae/g/3n/mos-production/latest/katex.min.js',
      katexAuto: 'https://image.uc.cn/s/uae/g/3n/mos-production/latest/auto-render.min.js',
      katexCss: 'https://image.uc.cn/s/uae/g/3n/mos-production/latest/katex.min.css'
    };
    
    // 动态加载脚本
    function loadScript(url, callback) {
      var script = document.createElement('script');
      script.src = url;
      script.onload = callback;
      document.head.appendChild(script);
    }
    
    // 动态加载样式
    function loadStyle(url) {
      var link = document.createElement('link');
      link.rel = 'stylesheet';
      link.href = url;
      document.head.appendChild(link);
    }&lt;/script&gt;&lt;!-- 3. Tailwind 配置 --&gt;&lt;script&gt;tailwind.config = {
      theme: {
        extend: {
          fontFamily: {
            sans: ['PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', 'system-ui', '-apple-system', 'sans-serif'],
            serif: ['Songti SC', 'STSong', 'SimSun', 'Georgia', 'serif'],
          },
          colors: {
            primary: {
              DEFAULT: '#3B82F6',
              light: '#60A5FA',
              dark: '#1D4ED8',
            },
            theme: {
              bg: '#F0F9FF',
              text: '#0F172A',
              muted: '#64748B',
              surface: 'rgba(255,255,255,0.85)',
            }
          }
        }
      }
    }&lt;/script&gt;&lt;style&gt;/* CSS Variables for Theme - 减少重复，提高性能 */
    :root {
      --c-primary: #3B82F6;
      --c-primary-light: #60A5FA;
      --c-primary-dark: #1D4ED8;
      --c-bg: #F0F9FF;
      --c-bg-via: #E0F2FE;
      --c-text: #0F172A;
      --c-text-muted: #64748B;
      --c-surface: rgba(255,255,255,0.85);
      --c-surface-border: rgba(59,130,246,0.2);
      --c-scrollbar: #93C5FD;
      --font-sans: 'SF Pro Display', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif;
    }
    
    /* ================================================================
       1. BASE STYLES
       ================================================================ */
    html, body { 
      height: auto;
      overflow-x: hidden;
    }
    body { 
      font-family: var(--font-sans); 
      background: var(--c-bg);
      color: var(--c-text);
      min-height: 100vh;
      position: relative;
    }
    /* 左上角装饰光晕 */
    body::before {
      content: '';
      position: fixed;
      top: -200px;
      left: -200px;
      width: 500px;
      height: 500px;
      background: radial-gradient(circle, #3B82F612, transparent 70%);
      pointer-events: none;
      z-index: 0;
    }
    /* 右侧装饰光晕 */
    body::after {
      content: '';
      position: fixed;
      top: 30%;
      right: -150px;
      width: 400px;
      height: 400px;
      background: radial-gradient(circle, #60A5FA08, transparent 70%);
      pointer-events: none;
      z-index: 0;
    }
    body &gt;* {
      position: relative;
      z-index: 1;
    }
    
    main {
      max-width: 1200px;
      margin: 0 auto;
    }
    h1, h2, h3, h4, h5, h6 { font-family: 'Songti SC', 'SimSun', serif; }
    
    
    /* Animations */
    @keyframes fadeIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }
    @keyframes slideUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
    .animate-fadeIn { animation: fadeIn 0.3s ease-out; }
    .animate-slideUp { animation: slideUp 0.5s ease-out; }
    
    /* Pattern */
    .pattern-elegant {
      background-image: url(&quot;data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 5L55 17.5V42.5L30 55L5 42.5V17.5L30 5z' fill='none' stroke='%233B82F6' stroke-opacity='0.08' stroke-width='1'/%3E%3C/svg%3E&quot;);
    }
    
    /* Card hover effect */
    .card-hover {
      transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    }
    .card-hover:hover {
      transform: translateY(-6px);
      box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.15);
    }

    /* ================================================================
       2. TYPOGRAPHY
       ================================================================ */
    .markdown-content h1 {
      font-size: clamp(1.8rem, 4vw, 2.5rem);
      font-weight: 700;
      color: #0F172A;
      margin: 1.5em 0 0.8em;
      text-align: center;
      letter-spacing: 0.05em;
    }
    .markdown-content h1::after {
      content: '';
      display: block;
      width: 60px;
      height: 3px;
      background: linear-gradient(90deg, #3B82F6, #60A5FA);
      margin: 0.5em auto 0;
      border-radius: 2px;
    }
    
    .markdown-content h2 {
      font-size: clamp(1.4rem, 3vw, 1.8rem);
      font-weight: 600;
      color: #0F172A;
      margin: 2em 0 1em;
      padding-bottom: 0.5em;
      border-bottom: 2px solid rgba(59,130,246,0.2);
      position: relative;
    }
    .markdown-content h2::after {
      content: '';
      position: absolute;
      bottom: -2px;
      left: 0;
      width: 80px;
      height: 2px;
      background: #3B82F6;
    }
    
    .markdown-content h3 {
      font-size: clamp(1.1rem, 2.5vw, 1.4rem);
      font-weight: 600;
      color: #0F172A;
      margin: 1.8em 0 0.8em;
      padding: 0.4em 0.8em;
      background: linear-gradient(135deg, rgba(59,130,246, 0.08) 0%, rgba(59,130,246, 0.03) 100%);
      border-radius: 6px;
    }
    
    .markdown-content h4 {
      font-size: clamp(1rem, 2vw, 1.2rem);
      font-weight: 600;
      font-family: 'SF Pro Display', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif;
      color: #0F172A;
      margin: 1.5em 0 0.6em;
      padding: 0.3em 0;
      border-bottom: 1px solid rgba(59,130,246, 0.3);
    }
    
    .markdown-content h5 {
      font-size: clamp(0.95rem, 1.8vw, 1.1rem);
      font-weight: 600;
      font-family: 'SF Pro Display', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif;
      color: #334155;
      margin: 1em 0 0.5em;
      padding: 0.2em 0;
      border-bottom: 1px dashed rgba(100,116,139, 0.3);
    }
    
    .markdown-content h6 {
      font-size: clamp(0.9rem, 1.6vw, 1rem);
      font-weight: 600;
      font-family: 'SF Pro Display', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif;
      color: #64748B;
      margin: 1em 0 0.5em;
      text-transform: uppercase;
      letter-spacing: 0.05em;
    }
    
    .markdown-content p {
      line-height: 1.8;
      margin: 1em 0;
      color: #0F172A;
      text-indent: 0 !important;
    }
    
    /* 隐藏分割线 */
    .markdown-content hr {
      display: none;
    }
    
    .markdown-content a {
      color: #3B82F6;
      text-decoration: none;
      border-bottom: 1px solid transparent;
      transition: all 0.2s;
    }
    .markdown-content a:hover {
      border-bottom-color: #3B82F6;
    }
    
    /* Table reference citations */
    .table-ref {
      font-size: 0.75em;
      vertical-align: super;
      margin-left: 2px;
    }
    .table-ref a {
      color: #3B82F6;
      background: #3B82F615;
      padding: 1px 4px;
      border-radius: 3px;
      text-decoration: none;
      border-bottom: none !important;
      transition: background 0.2s;
    }
    .table-ref a:hover {
      background: #3B82F630;
      border-bottom: none !important;
    }
    
    .markdown-content blockquote {
      margin: 1em 1.5em;
      padding: 0.6em 1em;
      background: rgba(59,130,246, 0.04);
      border: none;
      border-left: 3px solid rgba(59,130,246, 0.4);
      border-radius: 0 6px 6px 0;
      font-style: normal;
      color: #334155;
    }
    
    .markdown-content code {
      background: rgba(255,255,255,0.85);
      padding: 0.2em 0.4em;
      border-radius: 4px;
      font-size: 0.85em;
      color: #1D4ED8;
      font-family: 'SF Mono', 'Fira Code', 'Monaco', 'Consolas', 'Ubuntu Mono', monospace;
      word-break: break-all;
      overflow-wrap: break-word;
    }
    
    /* ================================================================
       3. CODE BLOCKS
       ================================================================ */
    /* Code block wrapper with header bar */
    .code-block-wrapper {
      position: relative;
      margin: 1.5em 0;
      border-radius: 10px;
      overflow: hidden;
      background: #1e1e2e;
      border: 1px solid rgba(59,130,246, 0.2);
      box-shadow: 0 4px 12px rgba(0,0,0,0.15);
    }
    /* Header bar */
    .code-block-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0 1rem;
      height: 38px;
      background: linear-gradient(180deg, #2d2d3d, #252535);
      border-bottom: 1px solid #3d3d4d;
    }
    /* Window controls (macOS style) */
    .code-window-controls {
      display: flex;
      gap: 6px;
    }
    .code-window-dot {
      width: 10px;
      height: 10px;
      border-radius: 50%;
    }
    .code-window-dot.red { background: #ff5f56; }
    .code-window-dot.yellow { background: #ffbd2e; }
    .code-window-dot.green { background: #27ca40; }
    /* Language label in header */
    .code-lang-label {
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.05em;
      color: #a0a0b0;
      text-transform: uppercase;
    }
    /* Copy button in header */
    .code-header-actions {
      display: flex;
      align-items: center;
      gap: 8px;
    }
    /* Old position label - hidden now */
    .code-block-wrapper &gt; .code-lang-label {
      position: absolute;
      top: 8px;
      right: 60px;
      font-size: 10px;
      font-weight: 500;
      letter-spacing: 0.05em;
      text-transform: uppercase;
      color: #888;
      z-index: 15;
    }
    /* Code copy button */
    .code-copy-btn {
      position: absolute;
      top: 6px;
      right: 8px;
      padding: 4px 8px;
      background: transparent;
      border: none;
      border-radius: 4px;
      color: #888;
      font-size: 11px;
      cursor: pointer;
      opacity: 0;
      transition: all 0.2s ease;
      z-index: 20;
      display: flex;
      align-items: center;
      gap: 4px;
    }
    .code-copy-btn:hover {
      background: #333;
      color: #fff;
    }
    .code-copy-btn.copied {
      color: #10b981;
    }
    
    /* Renderable code block with preview (Mermaid, ECharts, etc.) */
    .renderable-code-container {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 1rem;
      margin: 1.5em 0;
      align-items: start;
    }
    .renderable-code-container .code-block-wrapper {
      margin: 0;
    }
    .renderable-preview {
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 10px;
      padding: 1rem;
      min-height: 200px;
      display: flex;
      align-items: center;
      justify-content: center;
      overflow: auto;
    }
    .renderable-preview-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0.5rem 1rem;
      background: linear-gradient(180deg, #3B82F615, #3B82F608);
      border-bottom: 1px solid rgba(59,130,246,0.2);
      border-radius: 10px 10px 0 0;
    }
    .renderable-fullscreen-btn {
      background: transparent;
      border: 1px solid #3B82F640;
      border-radius: 6px;
      padding: 4px 8px;
      cursor: pointer;
      font-size: 14px;
      color: #3B82F6;
      transition: all 0.2s ease;
      display: flex;
      align-items: center;
      gap: 4px;
    }
    .renderable-fullscreen-btn:hover {
      background: #3B82F620;
      border-color: #3B82F6;
    }
    .renderable-fullscreen-btn span.btn-text {
      font-size: 11px;
      font-weight: 500;
    }
    /* Fullscreen overlay */
    .renderable-fullscreen-overlay {
      position: fixed;
      top: 0;
      left: 0;
      width: 100vw;
      height: 100vh;
      background: rgba(0, 0, 0, 0.9);
      z-index: 10000;
      display: flex;
      flex-direction: column;
      padding: 20px;
      box-sizing: border-box;
    }
    .renderable-fullscreen-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 10px 20px;
      background: rgba(255,255,255,0.85);
      border-radius: 10px 10px 0 0;
      border-bottom: 1px solid rgba(59,130,246,0.2);
    }
    .renderable-fullscreen-title {
      color: #0F172A;
      font-size: 14px;
      font-weight: 600;
    }
    .renderable-fullscreen-close {
      background: #ef4444;
      border: none;
      border-radius: 6px;
      padding: 8px 16px;
      cursor: pointer;
      font-size: 14px;
      color: white;
      font-weight: 500;
      transition: all 0.2s ease;
    }
    .renderable-fullscreen-close:hover {
      background: #dc2626;
    }
    .renderable-fullscreen-content {
      flex: 1;
      background: rgba(255,255,255,0.85);
      border-radius: 0 0 10px 10px;
      padding: 20px;
      overflow: auto;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .renderable-fullscreen-content svg {
      max-width: 100%;
      max-height: 100%;
    }
    .renderable-preview-title {
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.05em;
      color: #3B82F6;
      text-transform: uppercase;
      display: flex;
      align-items: center;
      gap: 6px;
    }
    .renderable-preview-wrapper {
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 10px;
      overflow: hidden;
      background: rgba(255,255,255,0.85);
    }
    .renderable-preview-content {
      padding: 1.5rem;
      min-height: 200px;
      display: flex;
      align-items: center;
      justify-content: center;
      overflow: auto;
      background: white;
    }
    .renderable-preview-content svg {
      max-width: 100%;
      height: auto;
    }
    /* Mermaid diagram styling */
    .mermaid {
      text-align: center;
    }
    /* Mobile: stack vertically */
    @media (max-width: 900px) {
      .renderable-code-container {
        grid-template-columns: 1fr;
      }
    }
    
    .markdown-content pre {
      background: #1e1e2e;
      padding: 1em 1.5em;
      margin: 0;
      overflow-x: auto;
      overflow-y: auto;
      max-height: 450px;
      border-radius: 0 0 10px 10px;
      border: none;
    }
    .markdown-content pre code {
      background: transparent;
      padding: 0;
      display: block;
      color: #e0e0e0;
      font-size: 0.9em;
      line-height: 1.6;
      font-family: 'SF Mono', 'Fira Code', 'Monaco', 'Consolas', 'Ubuntu Mono', monospace;
    }
    /* For pre without wrapper (fallback) */
    .markdown-content &gt; pre:not(.code-block-wrapper pre) {
      border-radius: 10px;
      border: 1px solid rgba(59,130,246, 0.15);
      margin: 1.5em 0;
      padding-top: 3em;
      position: relative;
      background: #1e1e2e;
    }
    .markdown-content &gt; pre:not(.code-block-wrapper pre)::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 38px;
      background: linear-gradient(180deg, #2d2d3d, #252535);
      border-radius: 10px 10px 0 0;
      border-bottom: 1px solid #3d3d4d;
    }
    .markdown-content &gt; pre:not(.code-block-wrapper pre)::after {
      content: '';
      position: absolute;
      top: 14px;
      left: 14px;
      width: 10px;
      height: 10px;
      background: #ff5f56;
      border-radius: 50%;
      box-shadow: 16px 0 0 #ffbd2e, 32px 0 0 #27ca40;
    }
    .code-block-wrapper:hover .code-copy-btn {
      opacity: 1;
    }
    .code-copy-btn {
      padding: 4px 8px;
      background: rgba(255,255,255,0.08);
      border: 1px solid rgba(255,255,255,0.15);
      border-radius: 4px;
      color: #a0a0b0;
      font-size: 11px;
      cursor: pointer;
      transition: all 0.2s;
    }
    .code-copy-btn:hover {
      background: rgba(255,255,255,0.15);
      color: #ffffff;
    }
    .code-copy-btn.copied {
      background: #27ca40;
      color: #fff;
      border-color: #27ca40;
    }
    .code-copy-btn svg {
      width: 14px;
      height: 14px;
    }
    /* Code scrollbar */
    .markdown-content pre::-webkit-scrollbar {
      width: 8px;
      height: 8px;
    }
    .markdown-content pre::-webkit-scrollbar-track {
      background: #2d2d3d;
      border-radius: 4px;
    }
    .markdown-content pre::-webkit-scrollbar-thumb {
      background: #4d4d5d;
      border-radius: 4px;
    }
    .markdown-content pre::-webkit-scrollbar-thumb:hover {
      background: #5d5d6d;
    }
    /* Syntax highlighting - Pygments classes */
    .markdown-content .highlight { background: transparent; }
    .markdown-content .highlight pre { background: #1e1e2e; }
    /* Keywords */
    .markdown-content pre .k, .markdown-content pre .kd, .markdown-content pre .kn,
    .markdown-content pre .kp, .markdown-content pre .kr, .markdown-content pre .kt { color: #569cd6; }
    /* Strings */
    .markdown-content pre .s, .markdown-content pre .s1, .markdown-content pre .s2,
    .markdown-content pre .sa, .markdown-content pre .sb, .markdown-content pre .sc,
    .markdown-content pre .sd, .markdown-content pre .se, .markdown-content pre .sh,
    .markdown-content pre .si, .markdown-content pre .sx, .markdown-content pre .sr { color: #ce9178; }
    /* Comments */
    .markdown-content pre .c, .markdown-content pre .c1, .markdown-content pre .ch,
    .markdown-content pre .cm, .markdown-content pre .cp, .markdown-content pre .cpf,
    .markdown-content pre .cs { color: #6a9955; font-style: italic; }
    /* Numbers */
    .markdown-content pre .m, .markdown-content pre .mb, .markdown-content pre .mf,
    .markdown-content pre .mh, .markdown-content pre .mi, .markdown-content pre .mo,
    .markdown-content pre .il { color: #b5cea8; }
    /* Functions */
    .markdown-content pre .nf, .markdown-content pre .fm, .markdown-content pre .nv { color: #dcdcaa; }
    /* Classes */
    .markdown-content pre .nc, .markdown-content pre .nn, .markdown-content pre .ne { color: #4ec9b0; }
    /* Operators */
    .markdown-content pre .o, .markdown-content pre .ow { color: #d4d4d4; }
    /* Punctuation */
    .markdown-content pre .p { color: #d4d4d4; }
    /* Names / Variables */
    .markdown-content pre .n, .markdown-content pre .na, .markdown-content pre .nb,
    .markdown-content pre .ni, .markdown-content pre .nl, .markdown-content pre .no,
    .markdown-content pre .nt { color: #9cdcfe; }
    /* Built-ins */
    .markdown-content pre .bp { color: #4fc1ff; }
    /* Decorators */
    .markdown-content pre .nd { color: #dcdcaa; }
    /* Special */
    .markdown-content pre .err { color: #f44747; }
    .markdown-content pre .gd { color: #f44747; }
    .markdown-content pre .gi { color: #89d185; }
    
    /* ================================================================
       4. LISTS
       ================================================================ */
    .markdown-content ul {
      list-style-type: disc;
      list-style-position: outside;
      margin: 1em 0;
      padding-left: 1.5em;
    }
    .markdown-content ol {
      list-style-type: decimal;
      list-style-position: outside;
      margin: 1em 0;
      padding-left: 1.5em;
    }
    .markdown-content li {
      line-height: 1.7;
      color: #0F172A;
      margin: 0.2em 0;
    }
    .markdown-content li &gt; p {
      display: inline;
      margin: 0;
    }
    .markdown-content li &gt; p:first-child {
      display: inline;
    }
    .markdown-content li p {
      display: inline;
      margin: 0;
    }
    .markdown-content li::marker {
      color: #3B82F6;
    }
    .markdown-content li &gt; ul,
    .markdown-content li &gt; ol {
      margin: 0.3em 0;
    }
    
    /* ================================================================
       5. TABLES
       ================================================================ */
    .table-scroll-wrapper {
      margin: 1.5em auto;
      border-radius: 12px;
      background: rgba(255,255,255,0.85);
      box-shadow: 0 2px 8px rgba(0,0,0,0.06);
      max-height: 70vh;
      overflow: auto;
      max-width: 96%;
    }
    
    .table-scroll-wrapper table {
      width: 100%;
      border-collapse: separate;
      border-spacing: 0;
    }
    
    .table-scroll-wrapper thead {
      position: sticky;
      top: 0;
      z-index: 10;
      background: #3B82F6;
    }
    
    .table-scroll-wrapper th {
      background: #3B82F6;
      color: white;
      padding: 14px 16px;
      font-weight: 600;
      text-align: left;
      white-space: nowrap;
    }
    
    .table-scroll-wrapper td {
      padding: 12px 16px;
      border-bottom: 1px solid rgba(59,130,246,0.2);
      color: #0F172A;
    }
    
    .table-scroll-wrapper tbody tr:last-child td {
      border-bottom: none;
    }
    
    .table-scroll-wrapper tbody tr:nth-child(odd) {
      background: rgba(255,255,255,0.85);
    }
    
    .table-scroll-wrapper tbody tr:nth-child(even) {
      background: rgba(59,130,246, 0.03);
    }
    
    .table-scroll-wrapper tbody tr:hover {
      background: rgba(59,130,246, 0.08);
    }
    
    /* 滚动条样式 */
    .table-scroll-wrapper::-webkit-scrollbar {
      width: 8px;
      height: 8px;
    }
    .table-scroll-wrapper::-webkit-scrollbar-track {
      background: transparent;
    }
    .table-scroll-wrapper::-webkit-scrollbar-thumb {
      background: rgba(0,0,0,0.1);
      border-radius: 4px;
    }
    .table-scroll-wrapper:hover::-webkit-scrollbar-thumb {
      background: #93C5FD;
    }
    .table-scroll-wrapper::-webkit-scrollbar-thumb:hover {
      background: #3B82F6;
    }
    
    /* 表格图片 */
    .table-scroll-wrapper td.has-images {
      white-space: nowrap;
    }
    .table-scroll-wrapper td.has-images br {
      display: none;
    }
    .table-scroll-wrapper td p {
      margin: 0;
      display: inline;
    }

    /* Table images - 统一方形裁切 */
    .markdown-content td img,
    .table-scroll-wrapper td img {
      width: 80px !important;
      height: 80px !important;
      min-width: 80px !important;
      min-height: 80px !important;
      max-width: 80px !important;
      max-height: 80px !important;
      object-fit: cover !important;
      border-radius: 8px;
      box-shadow: 0 2px 8px rgba(0,0,0,0.1);
      transition: all 0.3s ease;
      cursor: pointer;
      display: inline-block;
      margin: 3px;
      vertical-align: middle;
      flex-shrink: 0;
    }
    .markdown-content td img:hover,
    .table-scroll-wrapper td img:hover {
      transform: scale(1.05);
      box-shadow: 0 4px 12px rgba(59,130,246, 0.25);
    }
    @media (min-width: 768px) {
      .markdown-content td img,
      .table-scroll-wrapper td img { width: 100px !important; height: 100px !important; min-width: 100px !important; min-height: 100px !important; max-width: 100px !important; max-height: 100px !important; border-radius: 10px; }
    }
    @media (min-width: 1024px) {
      .markdown-content td img,
      .table-scroll-wrapper td img { width: 120px !important; height: 120px !important; min-width: 120px !important; min-height: 120px !important; max-width: 120px !important; max-height: 120px !important; }
    }
    
    /* 头像类图片 - 圆形 */
    .markdown-content td img.avatar,
    .markdown-content td.avatar-cell img {
      width: 60px;
      height: 60px;
      border-radius: 50%;
      border: 2px solid rgba(59,130,246,0.2);
    }
    .markdown-content td img.avatar:hover,
    .markdown-content td.avatar-cell img:hover {
      border-color: #3B82F6;
    }
    @media (min-width: 768px) {
      .markdown-content td img.avatar,
      .markdown-content td.avatar-cell img { width: 70px; height: 70px; }
    }
    @media (min-width: 1024px) {
      .markdown-content td img.avatar,
      .markdown-content td.avatar-cell img { width: 80px; height: 80px; }
    }
    
    /* ================================================================
       6. CUSTOM COMPONENTS
       ================================================================ */
    
    /* ------ 6.1 Tianzige Cards (卡片展示表) ------ */
    .tianzige-grid {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      gap: 1rem;
      margin: 1.5rem 0;
    }
    .tianzige-grid[data-columns=&quot;1&quot;] { grid-template-columns: 1fr; }
    .tianzige-grid[data-columns=&quot;2&quot;] { grid-template-columns: repeat(2, 1fr); }
    .tianzige-grid[data-columns=&quot;3&quot;] { grid-template-columns: repeat(3, 1fr); }
    .tianzige-grid[data-columns=&quot;4&quot;] { grid-template-columns: repeat(4, 1fr); }
    .tianzige-grid[data-columns=&quot;5&quot;] { grid-template-columns: repeat(5, 1fr); }
    @media (max-width: 1200px) {
      .tianzige-grid[data-columns=&quot;5&quot;] { grid-template-columns: repeat(3, 1fr); }
    }
    @media (max-width: 1024px) {
      .tianzige-grid[data-columns=&quot;4&quot;],
      .tianzige-grid[data-columns=&quot;5&quot;] { grid-template-columns: repeat(2, 1fr); }
      .tianzige-grid[data-columns=&quot;3&quot;] { grid-template-columns: repeat(2, 1fr); }
    }
    @media (max-width: 768px) {
      .tianzige-grid,
      .tianzige-grid[data-columns=&quot;2&quot;],
      .tianzige-grid[data-columns=&quot;3&quot;],
      .tianzige-grid[data-columns=&quot;4&quot;],
      .tianzige-grid[data-columns=&quot;5&quot;] {
        grid-template-columns: 1fr;
        gap: 0.8rem;
      }
    }
    
    .tianzige-card {
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 8px;
      box-shadow: 0 2px 8px rgba(0,0,0,0.06);
      transition: all 0.2s ease;
      overflow: hidden;
    }
    .tianzige-card:hover {
      box-shadow: 0 4px 16px rgba(59,130,246, 0.12);
      transform: translateY(-2px);
    }
    
    /* 卡片内容区 */
    .tianzige-body {
      padding: 10px 12px;
    }
    
    /* 图片卡片 */
    .tianzige-image {
      width: 100%;
      height: 140px;
      overflow: hidden;
      display: flex;
      align-items: center;
      justify-content: center;
      background: rgba(100,116,139, 0.05);
    }
    .tianzige-image img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center;
      transition: transform 0.3s ease;
    }
    .tianzige-card:hover .tianzige-image img {
      transform: scale(1.02);
    }
    .tianzige-card.has-image .tianzige-body {
      padding: 8px 10px;
    }
    
    /* 标题行：标签与标题第一行对齐 */
    .tianzige-header {
      display: flex;
      align-items: flex-start;
      gap: 8px;
      margin-bottom: 8px;
    }
    .tianzige-tag {
      padding: 4px 10px;
      background: #3B82F615;
      color: #3B82F6;
      font-size: 12px;
      font-weight: 500;
      border-radius: 12px;
      white-space: nowrap;
      border: 1px solid #3B82F625;
      line-height: 1.4;
      flex-shrink: 0;
      margin-top: 1px;
    }
    .tianzige-title {
      margin: 0;
      padding: 0;
      font-size: 15px;
      font-weight: 600;
      color: #0F172A;
      line-height: 1.4;
    }
    .tianzige-card h4.tianzige-title {
      margin: 0 !important;
      padding: 0 !important;
    }
    
    /* 正文内容 */
    .tianzige-content {
      font-size: 13px;
      color: #334155;
      line-height: 1.6;
      margin-bottom: 8px;
    }
    .tianzige-content:last-child {
      margin-bottom: 0;
    }
    
    /* 引用区块 */
    .tianzige-quote {
      margin: 8px 0 0 0;
      padding: 10px 12px;
      background: #3B82F60a;
      border-left: 3px solid #3B82F6;
      border-radius: 0 6px 6px 0;
      font-style: italic;
      color: #0F172A;
      font-size: 13px;
      line-height: 1.5;
    }
    
    /* 来源 */
    .tianzige-source {
      display: flex;
      align-items: center;
      justify-content: flex-end;
      gap: 4px;
      margin-top: 8px;
      font-style: normal;
      font-size: 12px;
      color: #64748B;
    }
    .tianzige-source-line {
      color: #64748B;
    }
    .tianzige-favicon {
      width: 14px;
      height: 14px;
      border-radius: 2px;
    }
    .tianzige-source a {
      color: #3B82F6;
      text-decoration: none;
      display: inline-flex;
      align-items: center;
      gap: 4px;
    }
    .tianzige-source a:hover {
      text-decoration: underline;
    }
    
    /* ------ 6.2 Sequence Timeline (序列表/时间线) ------ */
    .sequence-timeline {
      position: relative;
      padding: 2rem 0;
      margin: 2rem auto;
      max-width: 900px;
    }
    
    /* 中间的竖线 */
    .sequence-line {
      position: absolute;
      left: 50%;
      top: 0;
      bottom: 0;
      width: 4px;
      background: linear-gradient(180deg, #3B82F640, #3B82F6, #3B82F640);
      transform: translateX(-50%);
      border-radius: 2px;
    }
    
    /* 每个节点项 */
    .sequence-item {
      position: relative;
      display: flex;
      align-items: flex-start;
      margin-bottom: 2rem;
    }
    .sequence-item:last-child {
      margin-bottom: 0;
    }
    
    /* 圆点 - 居中在线上 */
    .sequence-dot {
      position: absolute;
      left: 50%;
      top: 0;
      width: 16px;
      height: 16px;
      background: rgba(255,255,255,0.85);
      border: 4px solid #3B82F6;
      border-radius: 50%;
      transform: translateX(-50%);
      z-index: 2;
      box-shadow: 0 2px 8px rgba(0,0,0,0.15);
    }
    
    /* 卡片容器 */
    .sequence-card {
      width: calc(50% - 40px);
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 12px;
      overflow: hidden;
      box-shadow: 0 4px 16px rgba(0,0,0,0.08);
      transition: transform 0.3s, box-shadow 0.3s;
    }
    .sequence-card:hover {
      transform: translateY(-4px);
      box-shadow: 0 8px 24px rgba(0,0,0,0.12);
    }
    
    /* 左侧卡片 */
    .sequence-left .sequence-card {
      margin-right: auto;
      margin-left: 0;
    }
    
    /* 右侧卡片 */
    .sequence-right .sequence-card {
      margin-left: auto;
      margin-right: 0;
    }
    
    /* 卡片图片 */
    .sequence-image {
      width: 100%;
      height: 160px;
      overflow: hidden;
    }
    .sequence-image img {
      width: 100%;
      height: 100%;
      object-fit: cover;
      object-position: center;
      transition: transform 0.3s;
    }
    .sequence-card:hover .sequence-image img {
      transform: scale(1.05);
    }
    
    /* 卡片内容区 */
    .sequence-body {
      padding: 16px;
    }
    
    /* 标题 */
    .sequence-title {
      margin: 0 0 8px 0;
      font-size: 17px;
      font-weight: 600;
      color: #3B82F6;
      line-height: 1.4;
    }
    
    /* 时间标签 */
    .sequence-time {
      display: inline-block;
      padding: 4px 10px;
      background: #3B82F615;
      color: #3B82F6;
      font-size: 12px;
      border-radius: 12px;
      margin-bottom: 10px;
    }
    
    /* 正文内容 */
    .sequence-content {
      font-size: 14px;
      line-height: 1.7;
      color: #0F172A;
    }
    .sequence-content strong {
      color: #3B82F6;
    }
    
    /* 移动端适配 - 单列布局 */
    @media (max-width: 768px) {
      .sequence-line {
        left: 20px;
      }
      .sequence-dot {
        left: 20px;
      }
      .sequence-item {
        padding-left: 50px;
      }
      .sequence-left .sequence-card,
      .sequence-right .sequence-card {
        width: 100%;
        margin: 0;
      }
    }
    
    /* ------ 6.3 Itinerary Timeline (行程时间轴) ------ */
    .itinerary-timeline {
      background: linear-gradient(135deg, rgba(255,255,255,0.85), rgba(59,130,246, 0.05));
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 16px;
      padding: 1.5rem 2rem;
      margin: 2rem 0;
      box-shadow: 0 4px 20px rgba(0,0,0,0.08);
    }
    
    .itinerary-title {
      font-size: 1.3rem;
      font-weight: 700;
      color: #0F172A;
      margin-bottom: 1.5rem;
      padding-bottom: 0.8rem;
      border-bottom: 2px solid #3B82F6;
    }
    
    .itinerary-item {
      display: flex;
      gap: 1rem;
      position: relative;
    }
    
    .itinerary-marker {
      display: flex;
      flex-direction: column;
      align-items: center;
      flex-shrink: 0;
      width: 24px;
    }
    
    .itinerary-dot {
      width: 16px;
      height: 16px;
      background: linear-gradient(135deg, #3B82F6, #60A5FA);
      border-radius: 50%;
      box-shadow: 0 2px 8px rgba(59,130,246, 0.4);
      flex-shrink: 0;
      z-index: 1;
    }
    
    .itinerary-line {
      width: 3px;
      flex: 1;
      background: linear-gradient(180deg, #3B82F6, rgba(59,130,246, 0.2));
      margin-top: 4px;
      border-radius: 2px;
    }
    
    .itinerary-content {
      flex: 1;
      padding-bottom: 1.5rem;
    }
    
    .itinerary-item-last .itinerary-content {
      padding-bottom: 0;
    }
    
    .itinerary-header {
      display: flex;
      align-items: center;
      gap: 1rem;
      margin-bottom: 0.6rem;
    }
    
    .itinerary-day {
      font-size: 1.1rem;
      font-weight: 700;
      color: #3B82F6;
      background: rgba(59,130,246, 0.12);
      padding: 0.3em 0.8em;
      border-radius: 20px;
    }
    
    .itinerary-date {
      font-size: 0.85rem;
      color: #64748B;
      font-weight: 500;
      background: rgba(59,130,246, 0.08);
      padding: 0.2em 0.6em;
      border-radius: 4px;
      font-family: 'SF Mono', 'Monaco', 'Consolas', monospace;
      letter-spacing: 0.5px;
    }
    
    /* ------ 6.3 Attraction Cards (景点卡片) ------ */
    .attraction-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 1.5rem;
      margin: 1.5rem 0;
    }
    @media (max-width: 1024px) {
      .attraction-grid {
        grid-template-columns: repeat(2, 1fr);
      }
    }
    @media (max-width: 640px) {
      .attraction-grid {
        grid-template-columns: 1fr;
      }
    }
    .attraction-card {
      background: rgba(255,255,255,0.85);
      border-radius: 12px;
      overflow: visible;
      box-shadow: 0 2px 12px rgba(0,0,0,0.08);
      border: 1px solid rgba(59,130,246,0.2);
      transition: transform 0.2s, box-shadow 0.2s;
    }
    .attraction-card .attraction-image {
      border-radius: 12px 12px 0 0;
      overflow: hidden;
    }
    .attraction-card:hover {
      transform: translateY(-4px);
      box-shadow: 0 8px 24px rgba(0,0,0,0.12);
    }
    .attraction-image {
      width: 100%;
      height: 160px;
      background-size: cover;
      background-position: center;
      background-color: rgba(100,116,139, 0.1);
      position: relative;
    }
    .attraction-rating {
      position: absolute;
      top: 10px;
      right: 10px;
      background: rgba(0,0,0,0.6);
      color: #fff;
      padding: 4px 10px;
      border-radius: 20px;
      font-size: 0.8rem;
      font-weight: 600;
    }
    .attraction-info {
      padding: 1rem;
    }
    .attraction-name {
      margin: 0 0 0.5rem 0;
      font-size: 1.05rem;
      font-weight: 600;
      color: #0F172A;
      line-height: 1.3;
    }
    .attraction-city {
      font-size: 0.85rem;
      color: #3B82F6;
      margin-bottom: 0.4rem;
    }
    .attraction-address {
      font-size: 0.8rem;
      color: #334155;
      margin-bottom: 0.5rem;
      line-height: 1.4;
    }
    .attraction-desc {
      font-size: 0.82rem;
      color: #334155;
      line-height: 1.5;
      margin: 0.5rem 0;
      display: -webkit-box;
      -webkit-line-clamp: 3;
      -webkit-box-orient: vertical;
      overflow: hidden;
    }
    .attraction-meta {
      display: flex;
      flex-wrap: wrap;
      gap: 0.4rem;
      margin-bottom: 0.5rem;
    }
    .attraction-meta-item {
      font-size: 0.7rem;
      padding: 0.15em 0.5em;
      border-radius: 3px;
      background: rgba(100,116,139, 0.1);
      color: #334155;
    }
    .attraction-meta-item.status-open {
      background: rgba(34, 197, 94, 0.15);
      color: #16a34a;
    }
    .attraction-meta-item.status-closed {
      background: rgba(239, 68, 68, 0.15);
      color: #dc2626;
    }
    .attraction-meta-item.ranking {
      background: rgba(251, 191, 36, 0.15);
      color: #d97706;
    }
    .attraction-meta-item.duration {
      background: rgba(59,130,246, 0.1);
      color: #3B82F6;
    }
    .attraction-tickets {
      margin: 0.6rem 0;
      padding: 0.6rem 0.6rem 0.8rem 0.6rem;
      background: rgba(100,116,139, 0.05);
      border-radius: 6px;
      border: 1px solid rgba(100,116,139, 0.1);
      overflow: visible;
    }
    .tickets-title {
      font-size: 0.75rem;
      font-weight: 600;
      color: #334155;
      margin-bottom: 0.5rem;
    }
    .ticket-item {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 0.5rem;
      padding: 0.6rem 0;
      min-height: 2.5rem;
      border-bottom: 1px dashed rgba(100,116,139, 0.15);
    }
    .ticket-item:last-child {
      border-bottom: none;
      padding-bottom: 0.4rem;
    }
    .ticket-name {
      font-size: 0.75rem;
      color: #0F172A;
      flex: 1;
    }
    .ticket-price {
      font-size: 0.8rem;
      font-weight: 600;
      color: #e53935;
    }
    .ticket-buy {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      font-size: 0.75rem;
      color: #3B82F6;
      text-decoration: none;
      padding: 0.3rem 0.6rem;
      border: 1px solid #3B82F6;
      box-sizing: border-box;
      border-radius: 4px;
      line-height: 1;
      height: 1.5rem;
      box-sizing: border-box;
      transition: all 0.2s;
      flex-shrink: 0;
    }
    .ticket-buy:hover {
      background: #3B82F6;
      color: white;
    }
    .attraction-link-wrapper {
      display: inline-flex;
      align-items: center;
      gap: 0.4rem;
      margin-top: 0.5rem;
    }
    .attraction-link {
      font-size: 0.85rem;
      color: #3B82F6;
      text-decoration: none;
      font-weight: 500;
    }
    .attraction-link:hover {
      text-decoration: underline;
    }
    .fliggy-icon {
      font-size: 1rem;
      flex-shrink: 0;
    }
    
    /* ------ 6.4 Hotel Cards (酒店卡片) ------ */
    .hotel-section {
      margin: 1.5rem 0;
    }
    .hotel-city-section {
      margin-bottom: 2rem;
    }
    .hotel-city-title {
      font-size: 1.2rem;
      font-weight: 600;
      color: #0F172A;
      margin: 0 0 1rem 0;
      padding: 0.6rem 1rem;
      background: linear-gradient(135deg, rgba(59,130,246, 0.1), rgba(96,165,250, 0.05));
      border-left: 4px solid #3B82F6;
      border-radius: 0 8px 8px 0;
    }
    .hotel-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 1.2rem;
    }
    @media (max-width: 1024px) {
      .hotel-grid {
        grid-template-columns: repeat(2, 1fr);
      }
    }
    @media (max-width: 640px) {
      .hotel-grid {
        grid-template-columns: 1fr;
      }
    }
    .hotel-card {
      background: rgba(255,255,255,0.85);
      border-radius: 10px;
      padding: 1rem;
      box-shadow: 0 2px 10px rgba(0,0,0,0.06);
      border: 1px solid rgba(59,130,246,0.2);
      transition: transform 0.2s, box-shadow 0.2s;
    }
    .hotel-card:hover {
      transform: translateY(-3px);
      box-shadow: 0 6px 20px rgba(0,0,0,0.1);
    }
    .hotel-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 0.6rem;
    }
    .hotel-star {
      font-size: 0.8rem;
      color: #334155;
      background: rgba(59,130,246, 0.1);
      padding: 0.2em 0.6em;
      border-radius: 4px;
    }
    .hotel-price {
      font-size: 1rem;
      font-weight: 700;
      color: #e53935;
    }
    .hotel-name {
      margin: 0 0 0.5rem 0;
      font-size: 1rem;
      font-weight: 600;
      color: #0F172A;
      line-height: 1.3;
    }
    .hotel-address {
      font-size: 0.8rem;
      color: #334155;
      margin-bottom: 0.3rem;
      line-height: 1.4;
    }
    .hotel-year {
      font-size: 0.75rem;
      color: #64748B;
      margin-bottom: 0.5rem;
    }
    .hotel-link-wrapper {
      display: inline-flex;
      align-items: center;
      gap: 0.3rem;
      margin-top: 0.5rem;
    }
    .hotel-icon {
      font-size: 0.9rem;
    }
    .hotel-link {
      font-size: 0.82rem;
      color: #3B82F6;
      text-decoration: none;
      font-weight: 500;
    }
    .hotel-link:hover {
      text-decoration: underline;
    }
    
    /* ------ 6.5 Budget Cards (预算卡片) ------ */
    /* Budget Card - 简洁版 */
    .budget-card-simple {
      background: rgba(255,255,255,0.85);
      border-radius: 12px;
      padding: 1rem 1.2rem;
      margin: 1.5rem 0;
      border: 1px solid rgba(59,130,246,0.2);
    }
    .budget-header-simple {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 0.8rem;
      padding-bottom: 0.6rem;
      border-bottom: 1px solid rgba(59,130,246, 0.1);
    }
    .budget-title-simple {
      font-size: 0.95rem;
      font-weight: 600;
      color: #0F172A;
    }
    .budget-total-simple {
      font-size: 0.9rem;
      font-weight: 700;
      color: #3B82F6;
    }
    .budget-total-notes {
      font-size: 0.8rem;
      color: #e67e22;
      background: linear-gradient(135deg, rgba(230, 126, 34, 0.08), rgba(230, 126, 34, 0.03));
      border: 1px solid rgba(230, 126, 34, 0.2);
      border-radius: 6px;
      padding: 0.5rem 0.8rem;
      margin-bottom: 0.8rem;
      display: flex;
      align-items: center;
      gap: 0.4rem;
    }
    .budget-total-notes::before {
      content: '⚠️';
      font-size: 0.9rem;
    }
    .budget-list {
      display: flex;
      flex-direction: column;
      gap: 0.4rem;
    }
    .budget-item-row {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      padding: 0.4rem 0;
      font-size: 0.85rem;
    }
    .budget-item-row .budget-item-icon {
      font-size: 0.9rem;
      flex-shrink: 0;
    }
    .budget-item-row .budget-item-name {
      font-weight: 500;
      color: #0F172A;
      white-space: nowrap;
    }
    .budget-item-row .budget-item-notes {
      color: #64748B;
      font-size: 0.75rem;
      flex: 1;
      min-width: 0;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .budget-item-row .budget-item-amount {
      font-weight: 600;
      color: #0F172A;
      white-space: nowrap;
      margin-left: auto;
    }
    .budget-item-row .budget-item-bar {
      width: 50px;
      height: 4px;
      background: rgba(100,116,139, 0.1);
      border-radius: 2px;
      position: relative;
      overflow: hidden;
      flex-shrink: 0;
    }
    .budget-item-row .budget-item-bar::after {
      content: '';
      position: absolute;
      left: 0;
      top: 0;
      height: 100%;
      width: var(--percent, 0%);
      background: var(--color, #3B82F6);
      border-radius: 2px;
    }
    @media (max-width: 640px) {
      .budget-item-row {
        flex-wrap: wrap;
        gap: 0.3rem;
      }
      .budget-item-row .budget-item-bar {
        width: 40px;
      }
      .budget-item-row .budget-item-notes {
        order: 10;
        flex-basis: 100%;
        margin-left: 1.4rem;
      }
    }

    /* Budget Card - 旧版保留 */
    .budget-card {
      background: linear-gradient(135deg, rgba(255,255,255,0.85), rgba(59,130,246, 0.03));
      border-radius: 16px;
      padding: 1.5rem;
      margin: 1.5rem 0;
      box-shadow: 0 4px 20px rgba(0,0,0,0.08);
      border: 1px solid rgba(59,130,246,0.2);
    }
    .budget-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 1.5rem;
      padding-bottom: 1rem;
      border-bottom: 2px solid rgba(59,130,246, 0.1);
    }
    .budget-title {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      font-size: 1.3rem;
      font-weight: 700;
      color: #0F172A;
    }
    .budget-icon {
      font-size: 1.5rem;
    }
    .budget-total {
      text-align: right;
    }
    .budget-total-label {
      display: block;
      font-size: 0.75rem;
      color: #64748B;
      margin-bottom: 0.2rem;
    }
    .budget-total-amount {
      font-size: 2rem;
      font-weight: 800;
      color: #3B82F6;
      letter-spacing: -0.02em;
    }
    .budget-total-note {
      font-size: 0.8rem;
      color: #64748B;
    }
    .budget-chart {
      display: flex;
      align-items: center;
      gap: 2rem;
      margin-bottom: 1.5rem;
      padding: 1rem;
      background: rgba(100,116,139, 0.03);
      border-radius: 12px;
    }
    .budget-donut {
      position: relative;
      width: 140px;
      height: 140px;
      flex-shrink: 0;
    }
    .budget-donut-svg {
      transform: rotate(-90deg);
    }
    .budget-segment {
      transition: opacity 0.3s;
    }
    .budget-segment:hover {
      opacity: 0.8;
    }
    .budget-donut-center {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      text-align: center;
    }
    .budget-donut-amount {
      font-size: 1.1rem;
      font-weight: 700;
      color: #0F172A;
    }
    .budget-legend {
      display: flex;
      flex-wrap: wrap;
      gap: 0.5rem 1rem;
      flex: 1;
    }
    .budget-legend-item {
      display: flex;
      align-items: center;
      gap: 0.4rem;
      font-size: 0.8rem;
      color: #334155;
    }
    .budget-legend-color {
      width: 10px;
      height: 10px;
      border-radius: 2px;
      flex-shrink: 0;
    }
    .budget-items {
      display: flex;
      flex-direction: column;
      gap: 0.8rem;
    }
    .budget-item {
      background: rgba(255,255,255,0.85);
      border-radius: 10px;
      padding: 0.8rem 1rem;
      border: 1px solid rgba(59,130,246,0.2);
    }
    .budget-item-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.5rem;
    }
    .budget-item-icon {
      font-size: 1.1rem;
    }
    .budget-item-name {
      flex: 1;
      font-size: 0.9rem;
      font-weight: 500;
      color: #0F172A;
    }
    .budget-item-amount {
      font-size: 1rem;
      font-weight: 700;
      color: #0F172A;
    }
    .budget-item-bar {
      height: 6px;
      background: rgba(100,116,139, 0.1);
      border-radius: 3px;
      overflow: hidden;
      margin-bottom: 0.4rem;
    }
    .budget-item-progress {
      height: 100%;
      border-radius: 3px;
      transition: width 0.5s ease;
    }
    .budget-item-footer {
      display: flex;
      justify-content: space-between;
      align-items: center;
    }
    .budget-item-percent {
      font-size: 0.75rem;
      font-weight: 600;
      color: #64748B;
    }
    .budget-item-notes {
      font-size: 0.7rem;
      color: #64748B;
      text-align: right;
      flex: 1;
      margin-left: 1rem;
    }
    @media (max-width: 640px) {
      .budget-chart {
        flex-direction: column;
        gap: 1rem;
      }
      .budget-donut {
        width: 120px;
        height: 120px;
      }
      .budget-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.8rem;
      }
      .budget-total {
        text-align: left;
      }
    }
    
    /* ------ 6.6 Supplement Cards (补充信息 - 便利贴) ------ */
    .supplement-section {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      gap: 1.5rem;
      margin: 2rem 0;
      padding: 0.5rem;
    }
    @media (max-width: 768px) {
      .supplement-section {
        grid-template-columns: 1fr;
      }
    }
    .supplement-card {
      background: linear-gradient(135deg, rgba(255,255,255,0.85) 0%, rgba(59,130,246, 0.08) 100%);
      border-radius: 4px;
      padding: 1.2rem 1.3rem 1.3rem;
      border: 1px solid rgba(59,130,246,0.2);
      position: relative;
      box-shadow: 
        2px 2px 4px rgba(0,0,0,0.06),
        4px 6px 12px rgba(0,0,0,0.04);
      transform: rotate(-0.5deg);
      transition: transform 0.2s ease, box-shadow 0.2s ease;
    }
    .supplement-card:nth-child(2) {
      transform: rotate(0.8deg);
    }
    .supplement-card:hover {
      transform: rotate(0deg) translateY(-2px);
      box-shadow: 
        2px 2px 6px rgba(0,0,0,0.08),
        6px 10px 20px rgba(0,0,0,0.08);
    }
    .supplement-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: 20px;
      right: 20px;
      height: 20px;
      background: linear-gradient(90deg, transparent 0%, rgba(0,0,0,0.02) 50%, transparent 100%);
      border-radius: 0 0 50% 50%;
      transform: translateY(-50%);
    }
    .supplement-card::after {
      content: '';
      position: absolute;
      bottom: 0;
      right: 0;
      width: 0;
      height: 0;
      border-style: solid;
      border-width: 0 0 20px 20px;
      border-color: transparent transparent rgba(59,130,246, 0.05) transparent;
    }
    .supplement-header {
      display: flex;
      align-items: center;
      gap: 0.4rem;
      margin-bottom: 0.8rem;
      padding-bottom: 0.5rem;
      border-bottom: 1px dashed rgba(59,130,246,0.2);
    }
    .supplement-icon {
      font-size: 1.2rem;
      line-height: 1;
      display: inline-flex;
      align-items: center;
      justify-content: center;
    }
    h3.supplement-title {
      margin: 0;
      padding: 0;
      font-size: 1.05rem;
      font-weight: 700;
      color: #0F172A;
      letter-spacing: 0.01em;
      background: none;
      border: none;
    }
    .supplement-card .supplement-list {
      list-style: none !important;
      padding: 0;
      margin: 0;
    }
    .supplement-card .supplement-list li {
      font-size: 0.92rem;
      color: #334155;
      line-height: 1.55;
      padding: 0.2rem 0 0.2rem 1rem;
      position: relative;
    }
    .supplement-card .supplement-list li::before {
      content: '•';
      position: absolute;
      left: 0;
      top: 0;
      color: #3B82F6;
      font-weight: bold;
    }
    
    /* ------ 6.6 Map Container (地图容器) ------ */
    .map-container {
      margin: 1.5rem 0 2rem;
      border-radius: 12px;
      border: 1px solid rgba(59,130,246,0.2);
      box-shadow: 0 2px 12px rgba(0,0,0,0.06);
      overflow: hidden;
      background: linear-gradient(180deg, #f5f5f5 0%, #e8e8e8 100%);
    }
    .map-container-title {
      display: block;
      padding: 0.5rem 1rem;
      font-size: 0.85rem;
      font-weight: 600;
      color: #334155;
      border-bottom: 1px solid rgba(59,130,246,0.2);
      background: rgba(255,255,255,0.85);
    }
    
    /* ------ 6.7 Day Cards (日期天数卡片) ------ */
    .day-date-card {
      display: flex;
      flex-direction: column;
      margin: 2rem 0 1rem 0;
      background: rgba(255,255,255,0.85);
      border-radius: 10px;
      box-shadow: 0 2px 12px rgba(0,0,0,0.08);
      overflow: hidden;
      border: 1px solid rgba(59,130,246, 0.15);
      max-width: 100%;
    }
    .day-date-header {
      display: flex;
      align-items: center;
      gap: 0;
      background: linear-gradient(135deg, rgba(59,130,246, 0.08), rgba(59,130,246, 0.02));
    }
    .day-badge {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 0.4rem 0.8rem;
      background: linear-gradient(135deg, #3B82F6, #60A5FA);
      min-width: 50px;
    }
    .day-badge-num {
      font-size: 1.3rem;
      font-weight: 800;
      color: white;
      line-height: 1;
    }
    .day-badge-text {
      font-size: 0.6rem;
      font-weight: 600;
      color: rgba(255,255,255,0.85);
      letter-spacing: 0.1em;
      margin-top: 1px;
    }
    .day-divider {
      width: 1px;
      height: 28px;
      background: linear-gradient(180deg, transparent, rgba(59,130,246, 0.3), transparent);
    }
    .day-date-info {
      display: flex;
      align-items: center;
      gap: 0.15rem;
      padding: 0.4rem 1rem;
    }
    .day-date-month {
      font-size: 1.1rem;
      font-weight: 600;
      color: #3B82F6;
    }
    .day-date-day {
      font-size: 1.1rem;
      font-weight: 600;
      color: #3B82F6;
    }
    .day-title {
      padding: 0.5rem 1.2rem;
      font-size: 1rem;
      font-weight: 600;
      color: #0F172A;
      border-left: 1px solid rgba(59,130,246, 0.2);
    }
    .day-strategy-card {
      margin: 0;
      padding: 1rem 1.2rem;
      background: linear-gradient(135deg, rgba(59,130,246, 0.06), rgba(59,130,246, 0.02));
      border-top: 1px solid rgba(59,130,246, 0.1);
    }
    .day-strategy-content {
      font-size: 0.92rem;
      color: #334155;
      line-height: 1.9;
    }
    .day-strategy-content strong {
      color: #3B82F6;
      font-weight: 600;
    }
    .day-brief {
      padding: 0.8rem 1rem;
      font-size: 0.9rem;
      color: #0F172A;
      border-top: 1px solid rgba(59,130,246, 0.12);
      line-height: 1.7;
      background: rgba(59,130,246, 0.02);
    }
    .day-brief-card {
      display: flex;
      align-items: flex-start;
      gap: 0.8rem;
      padding: 1rem 1.2rem;
      margin: 1rem 0;
      background: linear-gradient(135deg, rgba(59,130,246, 0.08), rgba(59,130,246, 0.02));
      border-radius: 10px;
      border-left: 4px solid #3B82F6;
    }
    .day-brief-icon {
      font-size: 1.3rem;
      line-height: 1;
    }
    .day-brief-content {
      flex: 1;
      font-size: 1rem;
      font-weight: 500;
      color: #0F172A;
      line-height: 1.5;
    }
    .day-strategy {
      padding: 0.8rem 1rem;
      font-size: 0.88rem;
      color: #334155;
      line-height: 1.8;
      border-top: 1px dashed rgba(59,130,246, 0.1);
      background: rgba(59,130,246, 0.01);
    }
    .day-strategy strong {
      color: #3B82F6;
      font-weight: 600;
    }
    .day-date-year {
      font-size: 0.75rem;
      color: #64748B;
      margin-left: 0.3rem;
    }
    
    /* ------ 6.7.1 H4 Activity Headers (活动标题样式化) ------ */
    /* Style h4 headers within itinerary section as activity headers */
    .markdown-content h4 {
      display: inline-flex;
      align-items: center;
      gap: 0.4rem;
      font-size: 0.95rem;
      font-weight: 600;
      margin: 1.5rem 0 0.8rem 0;
      padding: 0.5rem 1rem 0.5rem 0.6rem;
      background: linear-gradient(135deg, rgba(59,130,246, 0.12), rgba(59,130,246, 0.04));
      color: #3B82F6;
      border-radius: 8px;
      border-left: 4px solid #3B82F6;
    }
    .markdown-content h4::before {
      content: '';
    }
    
    /* Time-arrangement list styling */
    .markdown-content h4 + ul {
      margin-top: 0.5rem;
      background: rgba(59,130,246, 0.02);
      border-radius: 8px;
      padding: 0.6rem 1rem 0.6rem 2rem;
      border: 1px solid rgba(59,130,246, 0.08);
    }
    .markdown-content h4 + ul li {
      font-size: 0.88rem;
      color: #334155;
      margin-bottom: 0.3rem;
      line-height: 1.6;
    }
    .markdown-content h4 + ul li strong {
      color: #3B82F6;
    }
    
    /* Sub-section titles like **交通详情** */
    .markdown-content h4 + ul + p strong,
    .markdown-content h4 + p strong {
      display: inline-block;
      font-size: 0.9rem;
      color: #0F172A;
      margin: 0.8rem 0 0.5rem 0;
      padding-bottom: 0.3rem;
      border-bottom: 1px dashed rgba(59,130,246,0.2);
    }
    
    /* ------ 6.7.2 Inline Spot Cards (内嵌景点卡片) ------ */
    .inline-spot-card {
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 10px;
      padding: 1rem;
      margin: 0.8rem 0;
      box-shadow: 0 2px 8px rgba(0,0,0,0.04);
    }
    .inline-spot-header {
      display: flex;
      gap: 1rem;
      align-items: flex-start;
    }
    .inline-spot-image {
      width: 80px;
      height: 80px;
      border-radius: 8px;
      background-size: cover;
      background-position: center;
      flex-shrink: 0;
    }
    .inline-spot-info {
      flex: 1;
      min-width: 0;
    }
    .inline-spot-name {
      font-size: 1rem;
      font-weight: 600;
      color: #0F172A;
      margin: 0 0 0.3rem 0;
    }
    .inline-spot-city {
      font-size: 0.85rem;
      color: #334155;
      margin-bottom: 0.4rem;
    }
    .spot-meta {
      display: flex;
      flex-wrap: wrap;
      gap: 0.5rem;
      margin-top: 0.3rem;
    }
    .spot-meta-item {
      font-size: 0.75rem;
      padding: 0.15rem 0.5rem;
      border-radius: 4px;
      background: rgba(59,130,246, 0.08);
      color: #334155;
    }
    .spot-meta-item.status-open {
      background: rgba(16, 185, 129, 0.1);
      color: #059669;
    }
    .spot-meta-item.status-closed {
      background: rgba(239, 68, 68, 0.1);
      color: #dc2626;
    }
    .spot-meta-item.rating {
      background: rgba(245, 158, 11, 0.1);
      color: #d97706;
    }
    .inline-spot-ranking,
    .spot-ranking {
      font-size: 0.8rem;
      color: #3B82F6;
      margin: 0.5rem 0;
      padding: 0.3rem 0.6rem;
      background: rgba(59,130,246, 0.06);
      border-radius: 4px;
      display: inline-block;
    }
    .inline-spot-address {
      font-size: 0.82rem;
      color: #64748B;
      margin: 0.5rem 0;
    }
    .inline-spot-desc {
      font-size: 0.85rem;
      color: #334155;
      line-height: 1.7;
      margin: 0.5rem 0;
    }
    .spot-links {
      display: flex;
      gap: 0.8rem;
      margin-top: 0.8rem;
    }
    .spot-link {
      font-size: 0.82rem;
      padding: 0.4rem 0.8rem;
      border-radius: 6px;
      text-decoration: none;
      transition: all 0.2s;
    }
    .spot-link.nav-link {
      background: linear-gradient(135deg, #3b82f6, #60a5fa);
      color: white;
    }
    .spot-link.detail-link {
      background: linear-gradient(135deg, #3B82F6, #60A5FA);
      color: white;
    }
    .spot-link:hover {
      transform: translateY(-1px);
      box-shadow: 0 2px 8px rgba(0,0,0,0.15);
    }
    
    /* ------ 6.7.3 Ticket Cards (门票卡片) ------ */
    .tickets-container {
      margin: 0.8rem 0;
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 10px;
      overflow: hidden;
    }
    .tickets-header {
      font-size: 0.95rem;
      font-weight: 600;
      color: #0F172A;
      padding: 0.7rem 1rem;
      background: linear-gradient(135deg, rgba(59,130,246, 0.08), rgba(59,130,246, 0.03));
      border-bottom: 1px solid rgba(59,130,246,0.2);
    }
    .tickets-list {
      padding: 0.5rem;
    }
    .ticket-item-card {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 0.6rem;
      padding: 0.6rem 0.8rem;
      border-bottom: 1px dashed rgba(59,130,246,0.2);
    }
    .ticket-item-card:last-child {
      border-bottom: none;
    }
    .ticket-item-main {
      display: flex;
      align-items: center;
      gap: 0.8rem;
      flex: 1;
      min-width: 200px;
    }
    .ticket-item-name {
      font-size: 0.9rem;
      color: #0F172A;
    }
    .ticket-item-price {
      font-size: 0.9rem;
      font-weight: 600;
      color: #f59e0b;
    }
    .ticket-item-notes {
      font-size: 0.78rem;
      color: #64748B;
      flex: 1;
      min-width: 150px;
    }
    .ticket-buy-btn {
      font-size: 0.78rem;
      padding: 0.3rem 0.7rem;
      background: linear-gradient(135deg, #3B82F6, #60A5FA);
      color: white;
      border-radius: 5px;
      text-decoration: none;
      transition: all 0.2s;
    }
    .ticket-buy-btn:hover {
      transform: translateY(-1px);
      box-shadow: 0 2px 6px rgba(0,0,0,0.15);
    }
    
    @media (max-width: 600px) {
      .inline-spot-header {
        flex-direction: column;
      }
      .inline-spot-image {
        width: 100%;
        height: 120px;
      }
      .ticket-item-card {
        flex-direction: column;
        align-items: flex-start;
      }
      .ticket-item-main {
        width: 100%;
      }
      .ticket-item-notes {
        width: 100%;
      }
    }
    
    /* ------ 6.8 Schedule Info Card (日程简介) ------ */
    .schedule-info-card {
      display: flex;
      gap: 1rem;
      padding: 1rem 1.2rem;
      background: linear-gradient(135deg, rgba(59,130,246, 0.08), rgba(59,130,246, 0.03));
      border-left: 4px solid #3B82F6;
      border-radius: 0 10px 10px 0;
      margin: 1rem 0;
    }
    .schedule-info-icon {
      font-size: 1.5rem;
      flex-shrink: 0;
    }
    .schedule-info-content {
      font-size: 0.95rem;
      color: #334155;
      line-height: 1.8;
    }
    
    /* Schedule Images Grid */
    .schedule-images {
      display: grid;
      gap: 0.8rem;
      margin: 1rem 0;
      grid-template-columns: repeat(2, 1fr);
    }
    .schedule-images-2 {
      grid-template-columns: repeat(2, 1fr);
    }
    .schedule-images-3 {
      grid-template-columns: repeat(3, 1fr);
    }
    .schedule-images-4 {
      grid-template-columns: repeat(4, 1fr);
    }
    @media (max-width: 768px) {
      .schedule-images,
      .schedule-images-2,
      .schedule-images-3,
      .schedule-images-4 {
        grid-template-columns: repeat(2, 1fr);
      }
    }
    .schedule-image-item {
      margin: 0;
      padding: 0;
      border-radius: 10px;
      overflow: hidden;
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      box-shadow: 0 2px 8px rgba(0,0,0,0.06);
      transition: transform 0.2s, box-shadow 0.2s;
    }
    .schedule-image-item:hover {
      transform: translateY(-2px);
      box-shadow: 0 4px 12px rgba(0,0,0,0.1);
    }
    .schedule-image-item img {
      width: 100%;
      height: 160px;
      object-fit: cover;
      display: block;
      cursor: pointer;
    }
    @media (min-width: 768px) {
      .schedule-image-item img {
        height: 180px;
      }
    }
    
    /* ------ 6.9 Route Timeline &amp; Cards ------ */
    /* Route Container */
    .route-container {
      margin: 1.5rem 0;
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 16px;
      overflow: hidden;
    }
    .route-container-title {
      font-size: 1.1rem;
      font-weight: 600;
      color: #0F172A;
      padding: 1rem 1.2rem;
      background: linear-gradient(135deg, rgba(59,130,246, 0.1), rgba(59,130,246, 0.03));
      border-bottom: 1px solid rgba(59,130,246,0.2);
    }
    
    /* Route Groups Wrapper - for the timeline */
    .route-groups-wrapper {
      position: relative;
      padding: 1rem 1rem 1rem 2rem;
    }
    
    /* Route Group */
    .route-group {
      position: relative;
      padding-left: 1.8rem;
      margin-bottom: 1.5rem;
    }
    .route-group:last-child {
      margin-bottom: 0;
    }
    /* Timeline dot */
    .route-group::before {
      content: '';
      position: absolute;
      left: 0;
      top: 0.55rem;
      width: 12px;
      height: 12px;
      background: #3B82F6;
      border-radius: 50%;
      z-index: 3;
    }
    /* Arrow line - single unified shape using clip-path */
    .route-group:not(:last-child)::after {
      content: '';
      position: absolute;
      left: 3px;
      top: 1.4rem;
      width: 6px;
      height: calc(100% - 0.2rem);
      background: #3B82F6;
      clip-path: polygon(
        33% 0%,
        67% 0%,
        67% calc(100% - 8px),
        100% calc(100% - 8px),
        50% 100%,
        0% calc(100% - 8px),
        33% calc(100% - 8px)
      );
      z-index: 1;
    }
    .route-group-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 0.6rem 1rem;
      background: rgba(59,130,246, 0.08);
      border-radius: 8px 8px 0 0;
      border: 1px solid rgba(59,130,246,0.2);
      border-bottom: none;
    }
    .route-group-route {
      font-size: 0.95rem;
      font-weight: 600;
      color: #0F172A;
    }
    .route-group-route::before {
      content: '📍 ';
    }
    .route-group-count {
      font-size: 0.75rem;
      color: #64748B;
      background: rgba(255,255,255,0.85);
      padding: 0.25em 0.7em;
      border-radius: 20px;
      border: 1px solid rgba(59,130,246,0.2);
    }
    .route-group-options {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
      gap: 0.8rem;
      padding: 0.8rem;
      background: rgba(59,130,246, 0.02);
      border: 1px solid rgba(59,130,246,0.2);
      border-top: none;
      border-radius: 0 0 8px 8px;
    }
    .route-group-single .route-group-options {
      grid-template-columns: 1fr;
    }
    @media (max-width: 640px) {
      .route-groups-wrapper {
        padding-left: 1.5rem;
      }
      .route-group {
        padding-left: 1.5rem;
      }
      .route-group::before {
        width: 10px;
        height: 10px;
      }
      .route-group:not(:last-child)::after {
        left: 2px;
        width: 5px;
      }
      .route-group-options {
        grid-template-columns: 1fr;
      }
    }
    
    /* Route Card */
    .route-card {
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 10px;
      padding: 0.9rem;
      transition: transform 0.2s, box-shadow 0.2s;
    }
    .route-card:hover {
      transform: translateY(-2px);
      box-shadow: 0 4px 12px rgba(0,0,0,0.08);
      border-color: #3B82F6;
    }
    
    /* Simple Route Card - Unified Style */
    .route-card-simple {
      display: flex;
      flex-direction: column;
      gap: 0.3rem;
      padding: 0.6rem 0.8rem;
    }
    .simple-header {
      display: flex;
      align-items: center;
      gap: 0.4rem;
    }
    .route-card-simple .mode-icon {
      font-size: 1rem;
    }
    .route-card-simple .mode-name {
      font-size: 0.9rem;
      font-weight: 600;
      color: #0F172A;
    }
    .simple-info {
      display: flex;
      flex-wrap: wrap;
      gap: 0.6rem;
      font-size: 0.78rem;
      color: #64748B;
      padding-left: 1.4rem;
    }
    .simple-info .info-item {
      display: inline-flex;
      align-items: center;
      gap: 0.15rem;
    }
    .simple-info .info-item.price {
      color: #e53935;
    }
    .route-link-inline {
      margin-left: auto;
      padding: 0.2rem 0.5rem;
      background: rgba(59,130,246, 0.1);
      color: #3B82F6 !important;
      text-decoration: none !important;
      border-radius: 4px;
      font-size: 0.72rem;
      font-weight: 500;
      white-space: nowrap;
      transition: background 0.2s;
    }
    .route-link-inline:hover {
      background: rgba(59,130,246, 0.2);
    }
    .route-card-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 0.8rem;
      padding-bottom: 0.8rem;
      border-bottom: 1px dashed rgba(59,130,246,0.2);
    }
    .route-card-mode {
      display: flex;
      align-items: center;
      gap: 0.5rem;
    }
    .mode-icon {
      font-size: 1.5rem;
    }
    .mode-name {
      font-size: 1.1rem;
      font-weight: 600;
      color: #0F172A;
    }
    .route-badge {
      font-size: 0.75rem;
      padding: 0.3em 0.7em;
      border-radius: 20px;
      font-weight: 500;
    }
    .route-badge-direct {
      background: rgba(34, 197, 94, 0.15);
      color: #16a34a;
    }
    .route-badge-transfer {
      background: rgba(251, 191, 36, 0.15);
      color: #d97706;
    }
    .route-card-summary {
      display: flex;
      gap: 1.5rem;
      margin-bottom: 1rem;
    }
    .summary-item {
      display: flex;
      flex-direction: column;
      gap: 0.2rem;
    }
    .summary-label {
      font-size: 0.7rem;
      color: #64748B;
      text-transform: uppercase;
    }
    .summary-value {
      font-size: 1rem;
      font-weight: 600;
      color: #0F172A;
    }
    .summary-value.price {
      color: #e53935;
    }
    .route-card-segments {
      display: flex;
      flex-direction: column;
      gap: 0.5rem;
    }
    
    /* Segment Styles */
    .route-segment {
      background: rgba(59,130,246, 0.03);
      border-radius: 8px;
      padding: 0.8rem;
    }
    .seg-stations {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.5rem;
    }
    .seg-point {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 0.15rem;
      min-width: 70px;
    }
    .seg-dep {
      align-items: flex-start;
    }
    .seg-arr {
      align-items: flex-end;
    }
    .seg-time {
      font-size: 1.1rem;
      font-weight: 700;
      color: #0F172A;
    }
    .seg-station {
      font-size: 0.75rem;
      color: #64748B;
      white-space: nowrap;
    }
    .seg-arrow {
      flex: 1;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 0.3rem;
      min-width: 60px;
    }
    .seg-line {
      flex: 1;
      height: 2px;
      background: linear-gradient(90deg, rgba(59,130,246, 0.3), #3B82F6, rgba(59,130,246, 0.3));
    }
    .seg-icon {
      font-size: 0.9rem;
    }
    .seg-info {
      display: flex;
      flex-wrap: wrap;
      gap: 0.5rem;
      font-size: 0.75rem;
    }
    .seg-number {
      background: #3B82F6;
      color: white;
      padding: 0.2em 0.5em;
      border-radius: 4px;
      font-weight: 600;
    }
    .seg-class, .seg-carrier {
      background: rgba(59,130,246, 0.1);
      color: #334155;
      padding: 0.2em 0.5em;
      border-radius: 4px;
    }
    .seg-duration {
      color: #64748B;
    }
    .seg-transfer-indicator {
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 0.3rem;
      font-size: 0.75rem;
      color: #d97706;
      background: rgba(251, 191, 36, 0.1);
      border-radius: 4px;
    }
    .route-card-link,
    .route-card-link:link,
    .route-card-link:visited {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      margin-top: 0.6rem;
      padding: 0.5rem 1rem;
      background: linear-gradient(135deg, #1D4ED8, #3B82F6) !important;
      color: #ffffff !important;
      text-decoration: none !important;
      border-radius: 8px;
      font-size: 0.8rem;
      font-weight: 600;
      transition: all 0.2s;
      box-shadow: 0 2px 8px rgba(59,130,246, 0.35);
      text-shadow: 0 1px 2px rgba(0,0,0,0.2);
      border: none;
    }
    .route-card-link:hover,
    .route-card-link:active {
      background: linear-gradient(135deg, #3B82F6, #1D4ED8) !important;
      color: #ffffff !important;
      box-shadow: 0 4px 12px rgba(59,130,246, 0.45);
      transform: translateY(-1px);
    }
    
    /* Simple Route Timeline */
    .route-timeline {
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 12px;
      padding: 1.2rem 1.5rem;
      margin: 1rem 0;
    }
    .route-title {
      font-size: 1rem;
      font-weight: 600;
      color: #0F172A;
      margin-bottom: 1rem;
      padding-bottom: 0.5rem;
      border-bottom: 1px solid rgba(59,130,246,0.2);
    }
    .route-item {
      display: flex;
      gap: 1rem;
      align-items: flex-start;
    }
    .route-node {
      display: flex;
      flex-direction: column;
      align-items: center;
      width: 20px;
      flex-shrink: 0;
      padding-top: 0.45em;
    }
    .route-dot {
      width: 10px;
      height: 10px;
      background: #3B82F6;
      border-radius: 50%;
      flex-shrink: 0;
    }
    .route-line {
      width: 2px;
      flex: 1;
      background: linear-gradient(180deg, #3B82F6, rgba(59,130,246, 0.2));
      margin: 4px 0;
    }
    .route-info {
      flex: 1;
      padding-bottom: 1rem;
    }
    .route-item-last .route-info {
      padding-bottom: 0;
    }
    .route-places {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      flex-wrap: wrap;
      margin-bottom: 0.4rem;
    }
    .route-start, .route-end {
      font-weight: 600;
      color: #0F172A;
      font-size: 0.95rem;
    }
    .route-arrow {
      color: #3B82F6;
      font-weight: bold;
    }
    .route-details {
      display: flex;
      gap: 1rem;
      flex-wrap: wrap;
      font-size: 0.8rem;
      color: #64748B;
    }
    .route-mode, .route-distance, .route-duration {
      display: inline-flex;
      align-items: center;
      gap: 0.2rem;
    }
    
    /* ------ 6.10 Spots Grid (景点网格) ------ */
    .spots-container {
      margin: 1rem 0;
    }
    .spots-title {
      font-size: 1rem;
      font-weight: 600;
      color: #0F172A;
      margin-bottom: 0.8rem;
    }
    .spots-grid {
      display: flex;
      flex-wrap: wrap;
      gap: 0.6rem;
    }
    .spot-tag {
      display: inline-flex;
      align-items: center;
      gap: 0.4rem;
      background: rgba(59,130,246, 0.1);
      border: 1px solid rgba(59,130,246, 0.2);
      padding: 0.4em 0.8em;
      border-radius: 20px;
      font-size: 0.85rem;
      transition: all 0.2s;
    }
    .spot-tag:hover {
      background: rgba(59,130,246, 0.15);
      transform: translateY(-1px);
    }
    a.spot-tag {
      text-decoration: none;
      cursor: pointer;
    }
    a.spot-tag:hover {
      background: rgba(59,130,246, 0.2);
      box-shadow: 0 2px 8px rgba(59,130,246, 0.15);
    }
    a.spot-tag:hover .spot-name {
      color: #3B82F6;
    }
    .spot-num {
      background: #3B82F6;
      color: white;
      width: 1.4em;
      height: 1.4em;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 0.75rem;
      font-weight: 600;
    }
    .spot-name {
      color: #0F172A;
      font-weight: 500;
    }
    
    .itinerary-desc {
      font-size: 0.95rem;
      color: #334155;
      line-height: 1.8;
      padding-left: 0.2rem;
    }
    
    @media (max-width: 600px) {
      .itinerary-timeline {
        padding: 1rem 1.2rem;
      }
      .itinerary-title {
        font-size: 1.1rem;
      }
      .itinerary-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.3rem;
      }
      .itinerary-day {
        font-size: 1rem;
      }
    }
    
    /* ------ 6.11 New Spot Timeline (新版景点时间线) ------ */
    .spot-timeline-container {
      margin: 1rem 0;
    }
    .spot-timeline-item {
      display: flex;
      gap: 1rem;
      position: relative;
    }
    .spot-timeline-marker {
      display: flex;
      flex-direction: column;
      align-items: center;
      width: 36px;
      flex-shrink: 0;
    }
    .spot-timeline-num {
      width: 32px;
      height: 32px;
      background: linear-gradient(135deg, #3B82F6, #60A5FA);
      color: white;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      font-weight: 700;
      font-size: 0.9rem;
      box-shadow: 0 2px 8px rgba(59,130,246, 0.3);
    }
    .spot-timeline-content {
      flex: 1;
      padding-bottom: 1rem;
    }
    .spot-timeline-card {
      display: flex;
      gap: 1rem;
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 12px;
      padding: 1rem;
      transition: all 0.2s ease;
    }
    .spot-timeline-card:hover {
      border-color: rgba(59,130,246, 0.3);
      box-shadow: 0 4px 12px rgba(0,0,0,0.08);
    }
    .spot-timeline-image {
      width: 220px;
      height: 165px;
      border-radius: 12px;
      background-size: cover;
      background-position: center;
      flex-shrink: 0;
      box-shadow: 0 3px 12px rgba(0,0,0,0.12);
    }
    .spot-timeline-no-image {
      background: linear-gradient(145deg, #3B82F615 0%, #3B82F608 50%, #3B82F620 100%);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 4rem;
      position: relative;
      overflow: hidden;
    }
    .spot-timeline-no-image::before {
      content: '';
      position: absolute;
      width: 200%;
      height: 200%;
      background: repeating-linear-gradient(
        45deg,
        transparent,
        transparent 10px,
        #3B82F608 10px,
        #3B82F608 20px
      );
      animation: shimmer 3s ease-in-out infinite;
    }
    .spot-timeline-no-image span {
      position: relative;
      z-index: 1;
      filter: drop-shadow(0 2px 4px rgba(0,0,0,0.15));
    }
    @keyframes shimmer {
      0%, 100% { transform: translate(-25%, -25%); }
      50% { transform: translate(-20%, -20%); }
    }
    .spot-timeline-body {
      flex: 1;
      min-width: 0;
    }
    .spot-timeline-header {
      display: flex;
      align-items: center;
      flex-wrap: wrap;
      gap: 0.5rem;
      margin-bottom: 0.4rem;
    }
    .spot-timeline-name {
      font-size: 1.05rem;
      font-weight: 600;
      color: #0F172A;
    }
    .spot-tags {
      display: flex;
      gap: 0.4rem;
    }
    .spot-tag {
      font-size: 0.7rem;
      padding: 2px 6px;
      border-radius: 4px;
    }
    .spot-tag.status-open {
      background: #10B98115;
      color: #10B981;
    }
    .spot-tag.status-closed {
      background: #EF444415;
      color: #EF4444;
    }
    .spot-tag.spot-rating {
      background: #FEF3C715;
      color: #D97706;
    }
    .spot-timeline-location {
      font-size: 0.82rem;
      color: #64748B;
      margin-bottom: 0.4rem;
    }
    .spot-timeline-meta {
      display: flex;
      flex-wrap: wrap;
      gap: 0.5rem;
      margin-bottom: 0.4rem;
    }
    .spot-timeline-meta .spot-meta-item {
      font-size: 0.75rem;
      color: #334155;
      background: #3B82F608;
      padding: 2px 6px;
      border-radius: 4px;
    }
    .spot-timeline-desc {
      font-size: 0.82rem;
      color: #334155;
      line-height: 1.5;
      margin: 0.4rem 0;
    }
    .spot-timeline-actions {
      display: flex;
      gap: 0.5rem;
      margin-top: 0.6rem;
    }
    .spot-action-btn {
      display: inline-flex;
      align-items: center;
      gap: 0.2rem;
      padding: 5px 10px;
      border-radius: 6px;
      font-size: 0.8rem;
      text-decoration: none;
      transition: all 0.2s ease;
    }
    .spot-nav {
      background: #3B82F610;
      color: #3B82F6;
      border: 1px solid #3B82F630;
    }
    .spot-nav:hover {
      background: #3B82F6;
      color: white;
    }
    .spot-taxi {
      background: #3B82F610;
      color: #3B82F6;
      border: 1px solid #3B82F630;
    }
    .spot-taxi:hover {
      background: #3B82F6;
      color: white;
    }
    .spot-detail {
      background: rgba(255,255,255,0.85);
      color: #334155;
      border: 1px solid rgba(59,130,246,0.2);
    }
    .spot-detail:hover {
      background: #3B82F610;
      color: #3B82F6;
      border-color: #3B82F630;
    }
    /* 统一的 section 标题样式 */
    .section-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 1rem;
      padding-bottom: 0.6rem;
      border-bottom: 2px solid #3B82F6;
    }
    .section-icon {
      font-size: 1.1rem;
    }
    .section-title {
      font-size: 1rem;
      font-weight: 600;
      color: #0F172A;
    }
    
    /* 箭头距离指示器 */
    .spot-timeline-arrow {
      display: flex;
      flex-direction: column;
      align-items: center;
      margin: 0.6rem 0 0.6rem 18px;
      padding-left: 0.5rem;
    }
    .spot-arrow-line {
      width: 3px;
      height: 8px;
      background: #3B82F6;
      border-radius: 2px;
    }
    .spot-arrow-icon {
      font-size: 1.4rem;
      color: #3B82F6;
      line-height: 1;
      filter: drop-shadow(0 2px 4px rgba(59,130,246, 0.4));
    }
    .spot-arrow-distance {
      font-size: 0.85rem;
      font-weight: 600;
      color: #0F172A;
      background: linear-gradient(135deg, #3B82F620, #3B82F608);
      border: 1.5px solid #3B82F640;
      padding: 6px 14px;
      border-radius: 18px;
      margin-top: 2px;
      white-space: nowrap;
      box-shadow: 0 2px 8px rgba(59,130,246, 0.2);
    }
    /* 响应式 */
    @media (max-width: 600px) {
      .spot-timeline-card {
        flex-direction: column;
      }
      .spot-timeline-image {
        width: 100%;
        height: 200px;
      }
    }
    
    /* 保留酒店卡片名称样式 */
    .hotel-card-name {
      margin: 0;
      font-size: 1.05rem;
      font-weight: 600;
      color: #0F172A;
      display: block;
      padding: 0;
      background: none;
      border: none;
      border-radius: 0;
      border-left: none;
    }
    
    /* ------ 6.12 New Ticket Cards (新版门票卡片) ------ */
    .ticket-cards-container {
      margin: 1rem 0;
    }
    .ticket-cards-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.8rem;
    }
    .ticket-cards-icon {
      font-size: 1.1rem;
    }
    .ticket-cards-title {
      font-weight: 600;
      color: #0F172A;
    }
    .ticket-cards-list {
      padding: 0.5rem;
    }
    .ticket-spot-group {
      margin-bottom: 1rem;
      padding: 0.8rem;
      background: rgba(255,255,255,0.85);
      border-radius: 8px;
      border: 1px solid rgba(59,130,246,0.2);
    }
    .ticket-spot-group:last-child {
      margin-bottom: 0;
    }
    .ticket-spot-name {
      display: inline-flex;
      align-items: center;
      gap: 0.3rem;
      font-size: 0.85rem;
      font-weight: 600;
      color: #3B82F6;
      padding: 0.3rem 0.6rem;
      margin-bottom: 0.6rem;
      background: rgba(59,130,246, 0.1);
      border-radius: 4px;
    }
    .ticket-card-item {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0.8rem;
      border-radius: 8px;
      transition: all 0.3s ease;
    }
    .ticket-card-item:hover {
      background: #3B82F605;
    }
    .ticket-card-item.ticket-collapsed {
      display: none;
    }
    .ticket-spot-group.expanded .ticket-card-item.ticket-collapsed {
      display: flex;
    }
    .ticket-expand-btn {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 0.5rem;
      padding: 0.6rem 1rem;
      margin-top: 0.5rem;
      cursor: pointer;
      border-radius: 8px;
      background: #3B82F608;
      color: #3B82F6;
      font-size: 0.85rem;
      font-weight: 500;
      transition: all 0.2s ease;
    }
    .ticket-expand-btn:hover {
      background: #3B82F615;
    }
    .ticket-expand-icon {
      font-size: 0.7rem;
      transition: transform 0.3s ease;
    }
    .ticket-spot-group.expanded .ticket-expand-icon {
      transform: rotate(180deg);
    }
    .ticket-spot-group.expanded .ticket-expand-text::before {
      content: '收起';
    }
    .ticket-spot-group.expanded .ticket-expand-text {
      font-size: 0;
    }
    .ticket-spot-group.expanded .ticket-expand-text::before {
      font-size: 0.85rem;
    }
    .ticket-card-info {
      display: flex;
      align-items: center;
      gap: 0.6rem;
      flex: 1;
    }
    .ticket-card-name {
      font-weight: 500;
      color: #0F172A;
    }
    .ticket-note {
      font-size: 0.75rem;
      padding: 2px 8px;
      border-radius: 10px;
    }
    .ticket-note.note-refund {
      background: #10B98115;
      color: #10B981;
    }
    .ticket-note.note-info {
      background: #3B82F615;
      color: #3B82F6;
    }
    .ticket-card-right {
      display: flex;
      align-items: center;
      gap: 1rem;
    }
    .ticket-card-price {
      font-weight: 600;
      color: #E53E3E;
      font-size: 1rem;
    }
    .ticket-card-buy {
      display: inline-flex;
      align-items: center;
      padding: 6px 14px;
      background: #3B82F6;
      color: white;
      border-radius: 6px;
      font-size: 0.85rem;
      text-decoration: none;
      transition: all 0.2s;
    }
    .ticket-card-buy:hover {
      background: #1D4ED8;
      transform: translateY(-1px);
    }
    
    /* ------ 6.13 New Hotel Cards (新版酒店卡片) ------ */
    .hotel-cards-container {
      margin: 1rem 0;
    }
    .hotel-cards-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 1rem;
    }
    .hotel-cards-icon {
      font-size: 1.3rem;
    }
    .hotel-cards-title {
      font-size: 1.1rem;
      font-weight: 600;
      color: #0F172A;
    }
    .hotel-recommendation {
      margin: 0.5rem 0 1rem;
      padding: 0.75rem 1rem;
      background: linear-gradient(135deg, rgba(59,130,246, 0.06), rgba(59,130,246, 0.02));
      border-left: 3px solid #3B82F6;
      border-radius: 0 8px 8px 0;
      color: #334155;
      font-size: 0.9rem;
      line-height: 1.5;
    }
    .hotel-cards-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
      gap: 1rem;
    }
    .hotel-card-new {
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 12px;
      padding: 1rem;
      transition: all 0.3s ease;
    }
    .hotel-card-new:hover {
      box-shadow: 0 6px 20px rgba(59,130,246, 0.12);
      transform: translateY(-2px);
    }
    .hotel-card-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 0.6rem;
    }
    .hotel-card-star {
      font-size: 0.8rem;
      padding: 4px 10px;
      border-radius: 12px;
    }
    .hotel-card-star.star-luxury {
      background: linear-gradient(135deg, #FFD700, #FFA500);
      color: white;
    }
    .hotel-card-star.star-comfort {
      background: #3B82F615;
      color: #3B82F6;
    }
    .hotel-card-star.star-economy {
      background: #64748B20;
      color: #334155;
    }
    .hotel-card-price {
      font-weight: 600;
      color: #E53E3E;
      font-size: 1.1rem;
    }
    .hotel-card-name {
      margin: 0 0 0.5rem 0;
      font-size: 1rem;
      font-weight: 600;
      color: #0F172A;
    }
    .hotel-card-address {
      font-size: 0.85rem;
      color: #64748B;
      margin-bottom: 0.4rem;
    }
    .hotel-card-year {
      font-size: 0.8rem;
      color: #64748B;
      margin-bottom: 0.6rem;
    }
    .hotel-card-book {
      display: inline-flex;
      align-items: center;
      padding: 8px 16px;
      background: #3B82F6;
      color: white;
      border-radius: 8px;
      font-size: 0.9rem;
      text-decoration: none;
      transition: all 0.2s;
      margin-top: 0.5rem;
    }
    .hotel-card-book:hover {
      background: #1D4ED8;
    }
    
    /* ------ 6.14 New Transport Cards (新版交通卡片) ------ */
    .transport-cards-container {
      margin: 1rem 0;
    }
    .transport-cards-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.8rem;
    }
    .transport-cards-icon {
      font-size: 1.1rem;
    }
    .transport-cards-title {
      font-weight: 600;
      color: #0F172A;
    }
    .transport-cards-list {
      display: flex;
      flex-direction: column;
      gap: 0.6rem;
    }
    .transport-card {
      padding: 1rem;
      border-radius: 10px;
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      transition: all 0.2s ease;
    }
    .transport-card:hover {
      border-color: rgba(59,130,246, 0.3);
    }
    .transport-card:hover {
      background: #3B82F605;
    }
    .transport-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.6rem;
    }
    .transport-icon {
      font-size: 1.3rem;
    }
    .transport-mode {
      font-weight: 600;
      color: #0F172A;
    }
    .transport-route {
      display: flex;
      align-items: center;
      gap: 0.8rem;
      margin-bottom: 0.6rem;
      padding: 0.6rem 0.8rem;
      background: #3B82F608;
      border-radius: 8px;
    }
    .transport-start, .transport-end {
      font-weight: 500;
      color: #0F172A;
    }
    .transport-arrow {
      color: #3B82F6;
      font-weight: 600;
    }
    .transport-info {
      display: flex;
      flex-wrap: wrap;
      gap: 1rem;
    }
    .transport-info-item {
      font-size: 0.85rem;
      color: #334155;
    }
    .transport-reason {
      margin-top: 0.6rem;
      padding: 0.5rem 0.75rem;
      background: rgba(255,255,255,0.85);
      border-radius: 6px;
      font-size: 0.85rem;
      color: #334155;
      line-height: 1.5;
    }
    
    /* Transport Card Simple - 简化交通信息卡片 */
    .transport-card-simple {
      display: flex;
      flex-direction: column;
      gap: 0.8rem;
    }
    .transport-card-simple .transport-header {
      border-bottom: none;
      padding-bottom: 0;
    }
    .transport-card-simple .transport-actions {
      display: flex;
      justify-content: flex-end;
    }
    
    /* Transport Card V2 - 详细交通信息卡片 */
    .transport-card-v2 {
      padding: 0;
      overflow: hidden;
    }
    .transport-v2-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 0.8rem 1rem;
      background: linear-gradient(135deg, #3B82F612 0%, #3B82F605 100%);
      border-bottom: 1px solid rgba(59,130,246,0.2);
    }
    .transport-v2-mode {
      display: flex;
      align-items: center;
      gap: 0.5rem;
    }
    .transport-mode-text {
      font-weight: 600;
      color: #0F172A;
    }
    .transport-no {
      padding: 0.2rem 0.5rem;
      background: #3B82F6;
      color: white;
      border-radius: 4px;
      font-size: 0.8rem;
      font-weight: 600;
    }
    .transport-v2-meta {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      font-size: 0.75rem;
      color: #334155;
    }
    .transport-carrier, .transport-cabin, .transport-transfer {
      padding: 0.15rem 0.4rem;
      background: rgba(255,255,255,0.85);
      border-radius: 3px;
    }
    .transport-v2-route {
      display: flex;
      align-items: stretch;
      padding: 1rem;
      gap: 1rem;
    }
    .transport-v2-point {
      flex: 1;
      min-width: 0;
    }
    .transport-v2-dep {
      text-align: left;
    }
    .transport-v2-arr {
      text-align: right;
    }
    .transport-v2-time {
      font-size: 1.5rem;
      font-weight: 700;
      color: #0F172A;
      line-height: 1.2;
    }
    .transport-v2-station {
      font-size: 0.9rem;
      font-weight: 500;
      color: #0F172A;
      margin-top: 0.3rem;
    }
    .transport-v2-city {
      font-size: 0.8rem;
      color: #334155;
      margin-top: 0.2rem;
    }
    .transport-v2-middle {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      min-width: 120px;
      padding: 0 0.5rem;
    }
    .transport-v2-duration {
      font-size: 0.75rem;
      color: #334155;
      margin-bottom: 0.3rem;
    }
    .transport-v2-line {
      display: flex;
      align-items: center;
      gap: 0;
      width: 100%;
    }
    .transport-v2-dot {
      width: 8px;
      height: 8px;
      border-radius: 50%;
      background: #3B82F6;
      flex-shrink: 0;
    }
    .transport-v2-dash {
      flex: 1;
      height: 2px;
      background: linear-gradient(90deg, #3B82F640 0%, #3B82F640 50%, transparent 50%);
      background-size: 8px 2px;
    }
    .transport-v2-arrow-icon {
      font-size: 0.9rem;
      color: #3B82F6;
      margin: 0 0.3rem;
    }
    .transport-v2-footer {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 0.8rem 1rem;
      background: rgba(255,255,255,0.85);
      border-top: 1px solid rgba(59,130,246,0.2);
    }
    .transport-v2-price {
      display: flex;
      align-items: baseline;
      gap: 0.3rem;
    }
    .transport-price-label {
      font-size: 0.75rem;
      color: #334155;
    }
    .transport-price-value {
      font-size: 1.1rem;
      font-weight: 700;
      color: #3B82F6;
    }
    .transport-v2-actions {
      display: flex;
      gap: 0.5rem;
    }
    .transport-book-btn {
      display: inline-flex;
      align-items: center;
      gap: 0.3rem;
      padding: 0.4rem 0.8rem;
      background: #3B82F6;
      color: white;
      border-radius: 6px;
      font-size: 0.8rem;
      font-weight: 500;
      text-decoration: none;
      transition: all 0.2s ease;
    }
    .transport-book-btn:hover {
      filter: brightness(1.1);
      transform: translateY(-1px);
    }
    .transport-card-v2 .transport-reason {
      margin: 0;
      padding: 0.8rem 1rem;
      border-radius: 0;
      background: #3B82F605;
      border-top: 1px dashed rgba(59,130,246,0.2);
    }
    
    /* 中转行程样式 */
    .transport-card-transfer {
      border: 2px solid #3B82F630;
    }
    .transfer-badge {
      background: linear-gradient(135deg, #3B82F6, #60A5FA);
      color: white !important;
      padding: 2px 8px;
      border-radius: 10px;
      font-size: 0.75rem;
      font-weight: 600;
    }
    .transport-total-duration {
      font-size: 0.8rem;
      color: #64748B;
      padding: 2px 8px;
      background: #3B82F610;
      border-radius: 4px;
    }
    .transport-segments {
      padding: 0.5rem 1rem;
    }
    .transport-segment {
      background: rgba(255,255,255,0.85);
      border-radius: 10px;
      padding: 0.8rem;
      margin-bottom: 0.5rem;
      border: 1px solid rgba(59,130,246,0.2);
    }
    .segment-header {
      display: flex;
      align-items: center;
      gap: 0.6rem;
      margin-bottom: 0.6rem;
      flex-wrap: wrap;
    }
    .segment-num {
      background: linear-gradient(135deg, #3B82F6, #60A5FA);
      color: white;
      padding: 2px 10px;
      border-radius: 12px;
      font-size: 0.75rem;
      font-weight: 600;
    }
    .segment-flight-no {
      font-weight: 700;
      color: #0F172A;
      font-size: 0.9rem;
    }
    .segment-carrier, .segment-cabin {
      font-size: 0.75rem;
      color: #64748B;
      background: #3B82F608;
      padding: 2px 6px;
      border-radius: 4px;
    }
    .segment-route {
      display: flex;
      align-items: stretch;
      gap: 0.8rem;
    }
    .segment-point {
      flex: 1;
      min-width: 0;
    }
    .segment-dep {
      text-align: left;
    }
    .segment-arr {
      text-align: right;
    }
    .segment-time {
      font-size: 1rem;
      font-weight: 700;
      color: #0F172A;
    }
    .segment-station {
      font-size: 0.85rem;
      color: #0F172A;
      font-weight: 500;
    }
    .segment-city {
      font-size: 0.75rem;
      color: #64748B;
    }
    .segment-middle {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      min-width: 80px;
    }
    .segment-duration {
      font-size: 0.75rem;
      color: #64748B;
      margin-bottom: 4px;
    }
    .segment-line {
      display: flex;
      align-items: center;
      gap: 2px;
    }
    .segment-dot {
      width: 6px;
      height: 6px;
      border-radius: 50%;
      background: #3B82F6;
    }
    .segment-dash {
      width: 12px;
      height: 2px;
      background: #3B82F650;
    }
    .segment-icon {
      font-size: 0.9rem;
    }
    
    /* 中转等待 */
    .transfer-wait {
      display: flex;
      align-items: center;
      gap: 0.6rem;
      padding: 0.6rem 1rem;
      margin: 0.3rem 0;
      background: linear-gradient(90deg, #3B82F608, transparent);
      border-left: 3px solid #3B82F6;
      border-radius: 0 8px 8px 0;
    }
    .transfer-icon {
      font-size: 1rem;
    }
    .transfer-info {
      display: flex;
      flex-direction: column;
      gap: 2px;
    }
    .transfer-location {
      font-size: 0.85rem;
      font-weight: 500;
      color: #0F172A;
    }
    .transfer-label {
      font-size: 0.7rem;
      color: #3B82F6;
      font-weight: 600;
    }
    
    @media (max-width: 768px) {
      .transport-v2-route {
        flex-direction: column;
        gap: 0.5rem;
      }
      .segment-route {
        flex-direction: column;
        gap: 0.3rem;
      }
      .segment-point {
        text-align: center !important;
      }
      .segment-middle {
        flex-direction: row;
        min-width: auto;
        padding: 0.3rem 0;
      }
      .segment-duration {
        margin-bottom: 0;
        margin-right: 8px;
      }
      .transfer-wait {
        padding: 0.5rem 0.8rem;
      }
      .transport-v2-point {
        text-align: center !important;
      }
      .transport-v2-middle {
        flex-direction: row;
        min-width: auto;
        padding: 0.5rem 0;
      }
      .transport-v2-duration {
        margin-bottom: 0;
        margin-right: 0.5rem;
      }
      .transport-v2-line {
        width: auto;
        flex: 1;
      }
      .transport-v2-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
      }
    }
    
    @media (max-width: 768px) {
      .hotel-cards-grid {
        grid-template-columns: 1fr;
      }
      .ticket-card-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
      }
      .ticket-card-right {
        width: 100%;
        justify-content: space-between;
      }
    }
    
    /* 响应式：小屏幕卡片化 */
    /* Mobile table: horizontal scroll instead of card layout */
    @media screen and (max-width: 600px) {
      .table-scroll-wrapper {
        margin: 1em 0;
        border-radius: 8px;
        max-width: 100%;
        overflow: auto;
        -webkit-overflow-scrolling: touch;
      }
      
      .table-scroll-wrapper table {
        min-width: 400px;
        border-collapse: separate;
        border-spacing: 0;
      }
      
      .table-scroll-wrapper th,
      .table-scroll-wrapper td {
        padding: 10px 12px;
        font-size: 0.85rem;
        white-space: nowrap;
      }
      
      /* thead stays on top during vertical scroll */
      .table-scroll-wrapper thead {
        position: -webkit-sticky;
        position: sticky;
        top: 0;
        z-index: 20;
      }
      
      /* All header cells - solid background */
      .table-scroll-wrapper th {
        background: #3B82F6 !important;
        color: white !important;
        -webkit-tap-highlight-color: transparent;
      }
      
      /* Remove tap highlight on table elements */
      .table-scroll-wrapper,
      .table-scroll-wrapper table,
      .table-scroll-wrapper thead,
      .table-scroll-wrapper tbody,
      .table-scroll-wrapper tr,
      .table-scroll-wrapper td {
        -webkit-tap-highlight-color: transparent;
      }
      
      /* First column - limit width and allow text wrap for better space distribution */
      .table-scroll-wrapper th:first-child,
      .table-scroll-wrapper td:first-child {
        max-width: 100px;
        min-width: 70px;
        white-space: normal;
        word-break: break-word;
        line-height: 1.4;
      }
      
      /* First column cells - stay visible during horizontal scroll */
      .table-scroll-wrapper td:first-child {
        position: -webkit-sticky;
        position: sticky;
        left: 0;
        z-index: 10;
        background: #F0F9FF !important;
        box-shadow: 2px 0 5px rgba(0,0,0,0.15);
      }
      
      /* First header cell - highest z-index (corner cell) */
      .table-scroll-wrapper th:first-child {
        position: -webkit-sticky;
        position: sticky;
        left: 0;
        z-index: 30;
        background: #1D4ED8 !important;
        box-shadow: 2px 0 5px rgba(0,0,0,0.2);
      }
      
      /* Alternating row backgrounds for first column - use solid theme colors */
      .table-scroll-wrapper tbody tr:nth-child(odd) td:first-child {
        background: #F0F9FF !important;
      }
      
      .table-scroll-wrapper tbody tr:nth-child(even) td:first-child {
        background: #E0F2FE !important;
      }
      
      /* Only apply hover effect on devices that support hover (not touch) */
      @media (hover: hover) {
        .table-scroll-wrapper tbody tr:hover td:first-child {
          background: #60A5FA !important;
        }
      }
      
      /* Scroll hint */
      .table-scroll-wrapper::after {
        content: '← 左右滑动查看 →';
        display: block;
        text-align: center;
        font-size: 0.7rem;
        color: #64748B;
        padding: 0.5rem;
        opacity: 0.7;
      }
    }
    
    /* Very small screens - disable sticky first column to maximize content space */
    @media screen and (max-width: 380px) {
      .table-scroll-wrapper th:first-child,
      .table-scroll-wrapper td:first-child {
        position: static !important;
        box-shadow: none !important;
      }
    }
    
    /* Table links */
    .markdown-content td a {
      color: #3B82F6;
      font-weight: 500;
      background: rgba(59,130,246, 0.1);
      padding: 2px 6px;
      border-radius: 4px;
      border-bottom: none;
      word-break: break-all;
    }
    .markdown-content td a:hover {
      background: rgba(59,130,246, 0.2);
    }
    
    /* ================================================================
       7. IMAGES &amp; FIGURES
       ================================================================ */
    /* Standalone images - figure wrapper */
    .markdown-content &gt; figure {
      display: table;
      max-width: min(90vw, 808px);
      margin: 1.5em auto;
      padding: 4px;
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 8px;
      box-shadow: 0 2px 10px rgba(0,0,0,0.05);
      background: rgba(255,255,255,0.85);
    }
    .markdown-content figure img {
      max-width: 100%;
      max-height: 600px;
      width: auto;
      height: auto;
      object-fit: contain;
      border-radius: 6px;
      display: block;
      cursor: pointer;
      transition: transform 0.2s ease, box-shadow 0.2s ease;
    }
    .markdown-content figure img:hover {
      transform: scale(1.02);
      box-shadow: 0 4px 20px rgba(0,0,0,0.15);
    }
    .markdown-content figcaption {
      text-align: center;
      padding-top: 0.4em;
      font-size: 0.85em;
      color: #64748B;
      line-height: 1.4;
    }
    .markdown-content img:not([class*=&quot;amap&quot;]):not([class*=&quot;marker&quot;]):not([class*=&quot;location&quot;]) {
      max-width: min(100%, 800px);
      height: auto;
      border-radius: 8px;
      display: block;
    }
    /* Isolate map component from markdown styles */
    .markdown-content &gt; script[data-render-type] + * {
      all: revert;
    }
    .markdown-content &gt; script[data-render-type] + * * {
      all: revert;
    }
    
    /* 列表项中的图片 figure */
    .markdown-content .inline-figure {
      display: table;
      margin: 1em auto;
      padding: 4px;
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 8px;
      box-shadow: 0 2px 10px rgba(0,0,0,0.08);
    }
    .markdown-content .inline-figure img {
      max-height: 600px;
      max-width: min(90vw, 800px);
      width: auto;
      height: auto;
      object-fit: contain;
      border-radius: 6px;
      display: block;
      cursor: pointer;
    }
    .markdown-content .inline-figure figcaption {
      text-align: center;
      padding-top: 0.4em;
      font-size: 0.85em;
      color: #64748B;
      line-height: 1.4;
    }
    
    /* ========== 图片网格布局 ========== */
    .image-grid {
      display: flex;
      flex-wrap: wrap;
      gap: 1rem;
      margin: 1.5em 0;
      justify-content: center;
    }
    
    .image-grid figure {
      margin: 0;
      flex: 1 1 280px;
      max-width: 400px;
      border-radius: 10px;
      overflow: hidden;
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    }
    
    .image-grid figure img {
      width: 100%;
      height: 220px;
      object-fit: cover;
      display: block;
      transition: transform 0.3s;
    }
    
    .image-grid figure:hover img {
      transform: scale(1.02);
    }
    
    /* 响应式：小屏幕 */
    @media (max-width: 768px) {
      .image-grid {
        gap: 0.8rem;
      }
      .image-grid figure {
        flex: 1 1 45%;
        max-width: none;
      }
      .image-grid figure img {
        height: 160px;
      }
    }
    
    @media (max-width: 480px) {
      .image-grid figure {
        flex: 1 1 100%;
      }
      .image-grid figure img {
        height: 200px;
      }
    }
    
    /* Download Toast */
    .download-toast {
      position: fixed;
      bottom: 80px;
      left: 50%;
      transform: translateX(-50%) translateY(20px);
      background: rgba(0, 0, 0, 0.85);
      color: #fff;
      padding: 12px 20px;
      border-radius: 8px;
      font-size: 14px;
      display: flex;
      align-items: center;
      gap: 8px;
      z-index: 99999;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
      max-width: 90vw;
    }
    .download-toast.show {
      opacity: 1;
      visibility: visible;
      transform: translateX(-50%) translateY(0);
    }
    .download-toast svg {
      flex-shrink: 0;
      color: #fbbf24;
    }
    
    /* Lightbox backdrop - PC uses backdrop-filter, mobile uses solid background */
    .lightbox-backdrop {
      background: rgba(0,0,0,0.6);
      backdrop-filter: blur(8px);
      -webkit-backdrop-filter: blur(8px);
    }
    .image-viewer-backdrop {
      background: rgba(0,0,0,0.8);
      backdrop-filter: blur(8px);
      -webkit-backdrop-filter: blur(8px);
    }
    /* Ensure hidden modals don't take up any space */
    #lightbox.hidden, #imageViewer.hidden {
      display: none !important;
      visibility: hidden !important;
      opacity: 0 !important;
      pointer-events: none !important;
    }
    /* Mobile: disable backdrop-filter for better performance */
    @media (max-width: 768px) {
      .lightbox-backdrop {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        background: rgba(0,0,0,0.85);
      }
      .image-viewer-backdrop {
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        background: rgba(0,0,0,0.92);
      }
    }
    
    .markdown-content img.standalone {
      max-width: min(100%, 800px);
      height: auto;
      border-radius: 8px;
      display: block;
      position: relative;
      z-index: 1;
    }
    @media (min-width: 768px) {
      .markdown-content img { border-radius: 12px; }
    }
    
    /* LaTeX / KaTeX styles - 使用标准衬线字体 */
    .katex, .katex * {
      font-family: &quot;Times New Roman&quot;, &quot;Noto Serif&quot;, &quot;Source Serif Pro&quot;, Georgia, &quot;Songti SC&quot;, serif !important;
    }
    .katex {
      font-size: 1.1em;
    }
    .katex .mathit, .katex .mathnormal {
      font-style: italic !important;
    }
    .katex-display {
      overflow-x: auto;
      overflow-y: hidden;
      padding: 0.75em 0;
      margin: 1.25em 0;
    }
    .katex-display &gt; .katex {
      white-space: normal;
    }
    /* 行内公式微调 */
    p .katex, li .katex {
      padding: 0 0.15em;
    }
    
    /* ECharts containers */
    .chart-container,
    [id*=&quot;chart&quot;],
    [id*=&quot;Chart&quot;],
    .markdown-content div[style*=&quot;height&quot;][style*=&quot;width&quot;] {
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 16px;
      box-shadow: 0 4px 20px rgba(0,0,0,0.08);
      margin: 2em auto;
      max-width: 900px;
    }
    
    /* Mobile adjustments */
    @media (max-width: 767px) {
      .markdown-content blockquote { margin: 1em 0; padding: 0.8em 1em; }
      .markdown-content pre { margin: 0; padding: 0.8em 1em; border-radius: 0; font-size: 0.8em; max-height: 350px; }
      .code-block-wrapper { margin: 1em 0; border-radius: 8px; }
      .code-block-header { height: 32px; }
      .markdown-content &gt; figure { display: table; margin: 1em auto; padding: 4px; }
      .markdown-content figure img { max-height: 500px; }
      .markdown-content h1 { font-size: 1.5rem; }
      .markdown-content h2 { font-size: 1.25rem; }
      .markdown-content h3 { font-size: 1.1rem; }
      .markdown-content th, .markdown-content td { padding: 8px 10px; font-size: 0.9em; }
      
      /* Day card - optimized for mobile */
      .day-date-card {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        width: 100%;
        margin: 1.5rem 0 0.8rem 0;
      }
      .day-date-header {
        display: flex;
        flex-direction: row;
        align-items: stretch;
        background: linear-gradient(135deg, rgba(59,130,246, 0.08), rgba(59,130,246, 0.02));
      }
      .day-badge {
        flex-direction: column;
        gap: 0;
        padding: 0.5rem 0.6rem;
        min-width: 48px;
        background: linear-gradient(135deg, #3B82F6, #60A5FA);
      }
      .day-badge-num {
        font-size: 1.1rem;
        font-weight: 800;
        color: white;
      }
      .day-badge-text {
        font-size: 0.5rem;
        font-weight: 600;
        color: rgba(255,255,255,0.9);
      }
      .day-divider {
        display: none;
      }
      .day-date-header {
        flex-wrap: wrap;
      }
      .day-date-info {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: 0.3rem;
        padding: 0.5rem 0.8rem;
        background: transparent;
      }
      .day-date-month, .day-date-day {
        font-size: 1.1rem;
        font-weight: 700;
        color: #3B82F6;
      }
      .day-date-label {
        display: none;
      }
      .day-title {
        flex: 1 1 auto;
        padding: 0.5rem 0.8rem;
        font-size: 0.9rem;
        font-weight: 600;
        border-left: none;
        text-align: left;
        color: #0F172A;
        display: flex;
        align-items: center;
        min-width: 0;
      }
      .day-strategy-card {
        padding: 0.8rem 1rem;
      }
      .day-strategy-content {
        font-size: 0.85rem;
        line-height: 1.7;
      }
      .day-brief {
        padding: 0.8rem 1rem;
        font-size: 0.85rem;
        line-height: 1.6;
      }
      
      /* Schedule info card */
      .schedule-info-card {
        flex-direction: column;
        gap: 0.5rem;
        padding: 0.8rem 1rem;
      }
      .schedule-info-icon {
        font-size: 1.2rem;
      }
      .schedule-info-content {
        font-size: 0.85rem;
        line-height: 1.6;
      }
      
      /* Image grids - single column on mobile */
      .schedule-images,
      .schedule-images-2,
      .schedule-images-3,
      .schedule-images-4 {
        grid-template-columns: 1fr !important;
      }
      
      /* Tianzige - single column on mobile */
      .tianzige-grid,
      .tianzige-grid[data-columns=&quot;2&quot;],
      .tianzige-grid[data-columns=&quot;3&quot;],
      .tianzige-grid[data-columns=&quot;4&quot;],
      .tianzige-grid[data-columns=&quot;5&quot;] {
        grid-template-columns: 1fr !important;
        gap: 0.8rem !important;
      }
      .tianzige-body {
        padding: 10px 12px !important;
      }
      
      /* Figure grids - single column on mobile */
      .figure-grid-2,
      .figure-grid-3,
      .figure-grid-4 {
        grid-template-columns: 1fr !important;
        gap: 0.8rem !important;
      }
      
      /* Route cards */
      .route-groups-wrapper {
        padding-left: 1.8rem;
      }
      .route-group {
        padding-left: 1.2rem;
      }
      .route-group::before {
        left: -1.3rem;
        width: 10px;
        height: 10px;
      }
      .route-group:not(:last-child)::after {
        left: -1.1rem;
        width: 5px;
      }
      .route-group-options {
        grid-template-columns: 1fr !important;
        gap: 0.5rem;
      }
      .route-card {
        padding: 0.5rem 0.6rem;
      }
      
      /* Spots grid - 2 columns on mobile */
      .spots-grid {
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 0.5rem !important;
      }
      
      /* Hotel cards */
      .hotel-cards-grid {
        grid-template-columns: 1fr !important;
      }
      
      /* Budget card */
      .budget-items {
        gap: 0.5rem;
      }
      .budget-item {
        padding: 0.6rem 0.8rem;
      }
    }
    
    /* ================================================================
       NEW FORMAT: SPOT TIMELINE
       ================================================================ */
    /* 时间线样式已在上方6.11定义 */
    
    /* 保留酒店卡片名称样式 */
    .hotel-card-name {
      margin: 0;
      font-size: 1.05rem;
      font-weight: 600;
      color: #0F172A;
      display: block;
      padding: 0;
      background: none;
      border: none;
      border-radius: 0;
      border-left: none;
    }
    
    /* ================================================================
       NEW FORMAT: TICKET CARDS
       ================================================================ */
    .ticket-cards-container {
      margin: 1rem 0;
    }
    .ticket-cards-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.8rem;
    }
    .ticket-cards-icon {
      font-size: 1.1rem;
    }
    .ticket-cards-title {
      font-weight: 600;
      color: #0F172A;
      font-size: 1rem;
    }
    .ticket-cards-list {
      display: flex;
      flex-direction: column;
      gap: 0.6rem;
    }
    .ticket-spot-group {
      margin-bottom: 1rem;
      padding: 0.8rem;
      background: rgba(255,255,255,0.85);
      border-radius: 8px;
      border: 1px solid rgba(59,130,246,0.2);
    }
    .ticket-spot-group:last-child {
      margin-bottom: 0;
    }
    .ticket-spot-name {
      display: inline-flex;
      align-items: center;
      gap: 0.3rem;
      font-size: 0.85rem;
      font-weight: 600;
      color: #3B82F6;
      padding: 0.3rem 0.6rem;
      margin-bottom: 0.6rem;
      background: rgba(59,130,246, 0.1);
      border-radius: 4px;
    }
    .ticket-card-item {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0.5rem 0;
      background: transparent;
      border-radius: 8px;
      transition: background 0.2s;
    }
    .ticket-card-item:hover {
      background: rgba(59,130,246, 0.05);
    }
    .ticket-card-info {
      display: flex;
      align-items: center;
      gap: 0.6rem;
      flex: 1;
    }
    .ticket-card-name {
      color: #0F172A;
      font-weight: 500;
      font-size: 0.9rem;
    }
    .ticket-note {
      font-size: 0.75rem;
      padding: 2px 8px;
      border-radius: 4px;
    }
    .ticket-note.note-refund {
      background: rgba(76, 175, 80, 0.1);
      color: #4CAF50;
    }
    .ticket-note.note-info {
      background: rgba(59,130,246, 0.1);
      color: #3B82F6;
    }
    .ticket-card-right {
      display: flex;
      align-items: center;
      gap: 0.8rem;
    }
    .ticket-card-price {
      font-weight: 600;
      color: #3B82F6;
      font-size: 0.95rem;
    }
    .ticket-card-buy {
      background: #3B82F6;
      color: white !important;
      padding: 6px 14px;
      border-radius: 6px;
      font-size: 0.8rem;
      font-weight: 500;
      text-decoration: none;
      transition: all 0.2s;
    }
    .ticket-card-buy:hover {
      background: #1D4ED8;
      transform: translateY(-1px);
    }
    
    /* ================================================================
       NEW FORMAT: HOTEL CARDS
       ================================================================ */
    .hotel-cards-container {
      margin: 1rem 0;
    }
    .hotel-cards-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.8rem;
    }
    .hotel-cards-icon {
      font-size: 1.2rem;
    }
    .hotel-cards-title {
      font-weight: 600;
      color: #0F172A;
      font-size: 1rem;
    }
    .hotel-recommendation {
      margin: 0.5rem 0 1rem;
      padding: 0.75rem 1rem;
      background: linear-gradient(135deg, rgba(59,130,246, 0.06), rgba(59,130,246, 0.02));
      border-left: 3px solid #3B82F6;
      border-radius: 0 8px 8px 0;
      color: #334155;
      font-size: 0.9rem;
      line-height: 1.5;
    }
    .hotel-cards-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
      gap: 1rem;
    }
    .hotel-card-new {
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 12px;
      padding: 1rem 1.2rem;
      box-shadow: 0 2px 8px rgba(0,0,0,0.04);
      transition: all 0.3s ease;
    }
    .hotel-card-new:hover {
      transform: translateY(-2px);
      box-shadow: 0 6px 20px rgba(59,130,246, 0.1);
      border-color: rgba(59,130,246, 0.3);
    }
    .hotel-card-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 0.6rem;
    }
    .hotel-card-star {
      font-size: 0.8rem;
      padding: 3px 10px;
      border-radius: 20px;
    }
    .hotel-card-star.star-luxury {
      background: linear-gradient(135deg, #FFD700, #FFA500);
      color: #333;
    }
    .hotel-card-star.star-comfort {
      background: rgba(59,130,246, 0.1);
      color: #3B82F6;
    }
    .hotel-card-star.star-economy {
      background: rgba(255,255,255,0.95);
      color: #334155;
    }
    .hotel-card-price {
      font-weight: 700;
      font-size: 1.1rem;
      color: #3B82F6;
    }
    .hotel-card-name {
      margin: 0 0 0.5rem;
      font-size: 1rem;
      font-weight: 600;
      color: #0F172A;
    }
    .hotel-card-address {
      font-size: 0.8rem;
      color: #64748B;
      margin-bottom: 0.3rem;
    }
    .hotel-card-year {
      font-size: 0.8rem;
      color: #64748B;
      margin-bottom: 0.6rem;
    }
    .hotel-card-book {
      display: inline-block;
      margin-top: 0.6rem;
      padding: 8px 16px;
      background: #3B82F6;
      color: white !important;
      border-radius: 8px;
      font-size: 0.85rem;
      font-weight: 500;
      text-decoration: none;
      transition: all 0.2s;
    }
    .hotel-card-book:hover {
      background: #1D4ED8;
      transform: translateY(-1px);
    }
    
    /* ================================================================
       NEW FORMAT: TRANSPORT CARDS
       ================================================================ */
    .transport-cards-container {
      margin: 1rem 0;
    }
    .transport-cards-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.8rem;
    }
    .transport-cards-icon {
      font-size: 1.1rem;
    }
    .transport-cards-title {
      font-weight: 600;
      color: #0F172A;
      font-size: 1rem;
    }
    .transport-cards-list {
      display: flex;
      flex-direction: column;
      gap: 0.6rem;
    }
    .transport-card {
      background: rgba(255,255,255,0.85);
      border: 1px solid rgba(59,130,246,0.2);
      border-radius: 10px;
      padding: 1rem;
      transition: all 0.2s ease;
    }
    .transport-card:hover {
      border-color: rgba(59,130,246, 0.3);
    }
    .transport-card:hover {
      background: rgba(59,130,246, 0.05);
    }
    .transport-header {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      margin-bottom: 0.6rem;
    }
    .transport-icon {
      font-size: 1.4rem;
    }
    .transport-mode {
      font-weight: 600;
      color: #0F172A;
      font-size: 0.95rem;
    }
    .transport-route {
      display: flex;
      align-items: center;
      gap: 0.8rem;
      padding: 0.6rem 0;
    }
    .transport-start, .transport-end {
      font-weight: 500;
      color: #0F172A;
      font-size: 1rem;
    }
    .transport-arrow {
      color: #3B82F6;
      font-weight: 600;
      font-size: 1.1rem;
    }
    .transport-info {
      display: flex;
      flex-wrap: wrap;
      gap: 1rem;
      padding-top: 0.6rem;
      border-top: 1px dashed rgba(59,130,246,0.2);
    }
    .transport-info-item {
      font-size: 0.85rem;
      color: #334155;
    }
    .transport-reason {
      margin-top: 0.6rem;
      padding: 0.5rem 0.75rem;
      background: rgba(255,255,255,0.85);
      border-radius: 6px;
      font-size: 0.85rem;
      color: #334155;
      line-height: 1.5;
    }
    
    @media (max-width: 600px) {
      .hotel-cards-grid {
        grid-template-columns: 1fr;
      }
      .ticket-card-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
      }
      .ticket-card-item.ticket-collapsed {
        display: none;
      }
      .ticket-spot-group.expanded .ticket-card-item.ticket-collapsed {
        display: flex;
      }
      .ticket-card-right {
        width: 100%;
        justify-content: space-between;
      }
      .ticket-expand-btn {
        padding: 0.5rem 0.8rem;
        font-size: 0.8rem;
      }
      .transport-route {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.3rem;
      }
      .transport-arrow {
        transform: rotate(90deg);
        margin-left: 1rem;
      }
    }

    /* Tech style - table header */
    .markdown-content th {
      background: #1E40AF;
    }
    
    /* Softer h3 background */
    .markdown-content h3 {
      background: linear-gradient(90deg, rgba(59,130,246,0.08), transparent);
    }&lt;/style&gt;
&lt;header class=&quot;tech-header&quot;&gt;
    &lt;div class=&quot;tech-header-bg&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;tech-header-grid&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;tech-header-decoration&quot;&gt;
        &lt;div class=&quot;tech-hex tech-hex-1&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;tech-hex tech-hex-2&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;tech-glow&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;tech-header-content&quot;&gt;
        &lt;div class=&quot;tech-badge&quot;&gt;
            &lt;svg fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                &lt;path d=&quot;M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5&quot;&gt;&lt;/path&gt;
            &lt;/svg&gt;TECH
        &lt;/div&gt;
        &lt;h1 class=&quot;tech-title&quot;&gt;
            固态硬盘断电保存指南
        &lt;/h1&gt;
        &lt;div class=&quot;tech-divider&quot;&gt;
            &lt;span class=&quot;tech-divider-line&quot;&gt;&lt;/span&gt;&lt;span class=&quot;tech-divider-dot&quot;&gt;&lt;/span&gt;&lt;span class=&quot;tech-divider-line&quot;&gt;&lt;/span&gt;
        &lt;/div&gt;
        &lt;p class=&quot;tech-meta&quot;&gt;
            &lt;svg fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                &lt;rect height=&quot;18&quot; rx=&quot;2&quot; ry=&quot;2&quot; width=&quot;18&quot; x=&quot;3&quot; y=&quot;4&quot;&gt;&lt;/rect&gt;
                &lt;line x1=&quot;16&quot; x2=&quot;16&quot; y1=&quot;2&quot; y2=&quot;6&quot;&gt;&lt;/line&gt;
                &lt;line x1=&quot;8&quot; x2=&quot;8&quot; y1=&quot;2&quot; y2=&quot;6&quot;&gt;&lt;/line&gt;
                &lt;line x1=&quot;3&quot; x2=&quot;21&quot; y1=&quot;10&quot; y2=&quot;10&quot;&gt;&lt;/line&gt;
            &lt;/svg&gt;&lt;span id=&quot;tech-date&quot;&gt;&lt;/span&gt;
        &lt;/p&gt;
    &lt;/div&gt;
&lt;/header&gt;&lt;style&gt;.tech-header {
      position: relative;
      overflow: hidden;
      padding: 3rem 1.5rem;
      min-height: 220px;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    @media (min-width: 768px) {
      .tech-header { padding: 4rem 2rem; min-height: 260px; }
    }
    .tech-header-bg {
      position: absolute;
      inset: 0;
      background: linear-gradient(135deg, #F0F9FF 0%, #E0F2FE 50%, #3B82F610 100%);
    }
    .tech-header-grid {
      position: absolute;
      inset: 0;
      background-image: linear-gradient(rgba(59,130,246,0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(59,130,246,0.05) 1px, transparent 1px);
      background-size: 32px 32px;
    }
    .tech-header-decoration {
      position: absolute;
      inset: 0;
      overflow: hidden;
      pointer-events: none;
    }
    .tech-hex {
      position: absolute;
      width: 100px;
      height: 100px;
      background: url(&quot;data:image/svg+xml,%3Csvg width='100' height='100' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M50 5L93.3 27.5V72.5L50 95L6.7 72.5V27.5L50 5z' fill='none' stroke='%233B82F6' stroke-opacity='0.15' stroke-width='1'/%3E%3C/svg%3E&quot;) no-repeat center;
      animation: hexRotate 20s linear infinite;
    }
    .tech-hex-1 {
      top: 10%;
      right: 10%;
    }
    .tech-hex-2 {
      bottom: 15%;
      left: 8%;
      width: 80px;
      height: 80px;
      animation-direction: reverse;
      animation-duration: 25s;
    }
    .tech-glow {
      position: absolute;
      width: 300px;
      height: 300px;
      top: -100px;
      right: -80px;
      background: radial-gradient(circle, #3B82F620 0%, transparent 70%);
      filter: blur(60px);
      animation: glowPulse 8s ease-in-out infinite;
    }
    @keyframes hexRotate {
      from { transform: rotate(0deg); }
      to { transform: rotate(360deg); }
    }
    @keyframes glowPulse {
      0%, 100% { opacity: 0.5; transform: scale(1); }
      50% { opacity: 0.8; transform: scale(1.1); }
    }
    .tech-header-content {
      position: relative;
      z-index: 2;
      text-align: center;
      max-width: 800px;
    }
    .tech-badge {
      display: inline-flex;
      align-items: center;
      gap: 0.5rem;
      padding: 0.4rem 1rem;
      background: #3B82F610;
      border: 1px solid #3B82F630;
      border-radius: 50px;
      font-size: 0.65rem;
      font-weight: 600;
      letter-spacing: 0.15em;
      color: #3B82F6;
      margin-bottom: 1.5rem;
    }
    .tech-badge svg {
      width: 14px;
      height: 14px;
    }
    .tech-title {
      font-size: clamp(1.5rem, 5vw, 2.8rem);
      font-weight: 700;
      color: #0F172A;
      letter-spacing: 0.02em;
      line-height: 1.2;
      margin: 0 0 1.5rem;
    }
    .tech-divider {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 0.5rem;
      margin-bottom: 1.5rem;
    }
    .tech-divider-line {
      width: 60px;
      height: 2px;
      background: linear-gradient(90deg, transparent, #3B82F6);
      border-radius: 2px;
    }
    .tech-divider-line:last-child {
      background: linear-gradient(90deg, #3B82F6, transparent);
    }
    .tech-divider-dot {
      width: 8px;
      height: 8px;
      background: #3B82F6;
      border-radius: 50%;
    }
    .tech-meta {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 0.5rem;
      font-size: 0.85rem;
      color: #64748B;
    }
    .tech-meta svg {
      width: 14px;
      height: 14px;
      opacity: 0.7;
    }&lt;/style&gt;&lt;script&gt;document.addEventListener('DOMContentLoaded', function() {
      const dateEl = document.getElementById('tech-date');
      if (dateEl) {
        dateEl.textContent = new Date().toLocaleDateString('zh-CN', { year: 'numeric', month: 'long', day: 'numeric' });
      }
    });&lt;/script&gt;
&lt;main class=&quot;mx-auto px-4 pt-4 pb-6 sm:px-8 sm:pt-5 sm:pb-8 lg:px-12&quot;&gt;
    &lt;div class=&quot;markdown-content&quot;&gt;
        &lt;h2 id=&quot;_1&quot;&gt;
            一、核心结论：长期断电保存极具挑战
        &lt;/h2&gt;
        &lt;p&gt;
            &lt;strong&gt;固态硬盘在不通电情况下难以实现安全、可靠的长期数据保存，尤其对于普通消费级产品而言，超过1年即面临较高的数据丢失风险。&lt;/strong&gt;
        &lt;/p&gt;
        &lt;p&gt;
            虽然部分工业级或归档专用SSD宣称可达5–10年以上，但这依赖于特殊设计和理想环境。总体来看，SSD并非为冷存储而生，其数据保持能力受多种物理机制限制，若无定期维护，长时间断电保存极具挑战性。
        &lt;/p&gt;
        &lt;p&gt;
            以下三大关键事实支撑这一结论：
        &lt;/p&gt;
        &lt;ul class=&quot; list-paddingleft-2&quot;&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;标称期限短且条件苛刻&lt;/strong&gt;：主流消费级SSD在30°C下的标称保存期仅为&lt;strong&gt;1年&lt;/strong&gt;&lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9020470&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;SSD断电后数据能保存多久？_编程语言-CSDN问答&quot;&gt;1&lt;/a&gt;,&lt;a href=&quot;http://m.bjnews.com.cn/detail/1772675024129004.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;卫星载荷数据存储用什么品牌SSD不丢数据？——航天级数据完整性保障技术解析&quot;&gt;2&lt;/a&gt;,&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;，企业级产品在40°C高温下仅保证&lt;strong&gt;3个月&lt;/strong&gt;&lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9020470&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;SSD断电后数据能保存多久？_编程语言-CSDN问答&quot;&gt;1&lt;/a&gt;,&lt;a href=&quot;https://www.dell.com/support/kbdoc/zh-cn/000198930/ssd-data-retention-considerations-when-powering-off-systems-for-a-prolonged-duration?lang=en&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;PowerEdge: Data Retention Occur with SSD or Nvme Drives Due to Prolonged Power off \| Dell 中国&quot;&gt;4&lt;/a&gt;,&lt;a href=&quot;https://www.dell.com/support/kbdoc/zh-cn/000198930/poweredge-%E9%95%B7%E6%99%82%E9%96%93%E9%97%9C%E9%96%89%E9%9B%BB%E6%BA%90-%E5%B0%8E%E8%87%B4-ssd-%E6%88%96-nvme-%E7%A3%81%E7%A2%9F%E6%A9%9F%E7%99%BC%E7%94%9F%E8%B3%87%E6%96%99%E4%BF%9D%E7%95%99?lang=tw&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;PowerEdge：長時間關閉電源，導致 SSD 或 NVMe 磁碟機發生資料保留 \| Dell 中国&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;。这些是理想新盘的最低保障，实际使用中往往更短。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;性能衰减显著&lt;/strong&gt;：随着SSD写入磨损加剧，其数据保持能力会急剧下降。接近寿命终点的设备，保存时间可能缩短至原值的&lt;strong&gt;30%-50%&lt;/strong&gt;&lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9020470&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;SSD断电后数据能保存多久？_编程语言-CSDN问答&quot;&gt;1&lt;/a&gt;,&lt;a href=&quot;https://m.itbear.com.cn/html/2025-04/789608.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;闲置两年未通电，SSD竟遭遇数据丢失与性能下滑！-业界动态-ITBear比尔科技&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;，远低于标称水平。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;必须主动维护&lt;/strong&gt;：多厂商明确建议定期通电刷新。例如，Dell建议含用户数据的SSD应&lt;strong&gt;每2.5个月通电一次，持续至少3周&lt;/strong&gt;&lt;sup&gt;&lt;a href=&quot;https://www.dell.com/support/kbdoc/zh-cn/000198930/ssd-data-retention-considerations-when-powering-off-systems-for-a-prolonged-duration?lang=en&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;PowerEdge: Data Retention Occur with SSD or Nvme Drives Due to Prolonged Power off \| Dell 中国&quot;&gt;4&lt;/a&gt;,&lt;a href=&quot;https://www.dell.com/support/kbdoc/zh-cn/000198930/poweredge-%E9%95%B7%E6%99%82%E9%96%93%E9%97%9C%E9%96%89%E9%9B%BB%E6%BA%90-%E5%B0%8E%E8%87%B4-ssd-%E6%88%96-nvme-%E7%A3%81%E7%A2%9F%E6%A9%9F%E7%99%BC%E7%94%9F%E8%B3%87%E6%96%99%E4%BF%9D%E7%95%99?lang=tw&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;PowerEdge：長時間關閉電源，導致 SSD 或 NVMe 磁碟機發生資料保留 \| Dell 中国&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;；华为则规定已存储数据的SSD在≤40°C环境下最长放置&lt;strong&gt;不得超过3个月&lt;/strong&gt;&lt;sup&gt;&lt;a href=&quot;https://support.huawei.cn/enterprise/zh/doc/EDOC1100233665/405e63b2&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;环境参数 - OceanStor 6x10, 18x10系列 6.1.x &amp;amp; V700R001 产品描述 - 华为&quot;&gt;7&lt;/a&gt;,&lt;a href=&quot;https://support.huawei.cn/enterprise/zh/doc/EDOC1100194142/73cde4ae&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;环境要求（OceanStor Pacific 9540 Kunpeng） - OceanStor Pacific系列 8.1.0 产品描述 07 - 华为&quot;&gt;8&lt;/a&gt;,&lt;a href=&quot;https://support.huawei.cn/enterprise/zh/doc/EDOC1100354515/38643951&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;环境参数 - OceanProtect X9000K 1.5.0 产品描述 01 - 华为&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;
            因此，将SSD作为纯冷备份介质存在重大隐患。若需长期归档，必须结合低温存储、定期通电与多重备份等主动管理措施，否则极易造成不可逆的数据损失&lt;sup&gt;&lt;a href=&quot;http://m.bjnews.com.cn/detail/1772675024129004.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;卫星载荷数据存储用什么品牌SSD不丢数据？——航天级数据完整性保障技术解析&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;。
        &lt;/p&gt;
        &lt;h2 id=&quot;_2&quot;&gt;
            二、不同条件下固态硬盘的数据保存期限
        &lt;/h2&gt;
        &lt;p&gt;
            固态硬盘的断电数据保存期限并非固定值，而是由其类型、NAND闪存结构、环境温度及使用磨损程度共同决定。以下基于JEDEC行业标准与厂商技术资料，对不同条件下的保存能力进行系统性说明。
        &lt;/p&gt;
        &lt;h3 id=&quot;ssd&quot;&gt;
            主流SSD类型的断电数据保留能力对比
        &lt;/h3&gt;&lt;style&gt;.compare-container-chart_9eaa3caa {
    font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, &quot;PingFang SC&quot;, sans-serif;
    background: transparent;
    color: #333;  /* 统一使用深色文字 */
    line-height: 1.6;
    max-width: 1400px;
    margin: 20px auto;
    padding: 0 20px;
    box-sizing: border-box;
}

.compare-container-chart_9eaa3caa * {
    box-sizing: border-box;
}

/* 页眉 - 白色背景 */
.compare-header-chart_9eaa3caa {
    background: white;
    color: #1a1a1a;
    padding: 30px;
    border-radius: 12px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
    margin-bottom: 30px;
    text-align: center;
}

.compare-header-chart_9eaa3caa h1 {
    font-size: 32px;
    margin-bottom: 10px;
    font-weight: 700;
    word-wrap: break-word;
    color: #1a1a1a;
}

.compare-header-chart_9eaa3caa .subtitle {
    color: #666;
    font-size: 16px;
    word-wrap: break-word;
}

/* 概览卡片 - 白色背景 */
.overview-cards-chart_9eaa3caa {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
    margin-bottom: 30px;
}

.overview-card-chart_9eaa3caa {
    background: white;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
    transition: transform 0.2s, box-shadow 0.2s;
    border-top: 4px solid;
    min-width: 0;
    overflow: hidden;
}

.overview-card-chart_9eaa3caa:hover {
    transform: translateY(-4px);
    box-shadow: 0 6px 20px rgba(0,0,0,0.12);
}

.overview-card-chart_9eaa3caa h3 {
    font-size: 20px;
    margin-bottom: 8px;
    color: #1a1a1a;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

.overview-card-chart_9eaa3caa .card-subtitle {
    font-size: 13px;
    color: #333;  /* 原来是 #666 */
    margin-bottom: 15px;
    word-wrap: break-word;
}

.overview-card-chart_9eaa3caa .price-tag {
    font-size: 24px;
    font-weight: 700;
    margin-bottom: 15px;
    word-wrap: break-word;
}

.overview-card-chart_9eaa3caa .specs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.spec-item-chart_9eaa3caa {
    padding: 8px;
    background: #f8f9fa;
    border-radius: 6px;
    font-size: 12px;
    min-width: 0;
    overflow: hidden;
}

.spec-item-chart_9eaa3caa .label {
    color: #555;  /* 原来是 #666 */
    font-size: 11px;
    margin-bottom: 4px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}


.spec-item-chart_9eaa3caa .value {
    font-size: 14px;
    font-weight: 600;
    color: #1a1a1a;
    word-wrap: break-word;
    overflow-wrap: break-word;
    line-height: 1.3;
}

/* 对比区域 - 白色背景 */
.comparison-section-chart_9eaa3caa {
    background: white;
    border-radius: 12px;
    padding: 25px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
    margin-bottom: 30px;
    overflow: hidden;
}

.section-title-chart_9eaa3caa {
    font-size: 18px;
    color: #1a1a1a;
    margin-bottom: 20px;
    padding-bottom: 10px;
    border-bottom: 2px solid #f0f0f0;
    display: flex;
    align-items: center;
    gap: 8px;
    word-wrap: break-word;
}

.section-title-chart_9eaa3caa::before {
    content: '';
    width: 4px;
    height: 18px;
    background: #1890ff;
    border-radius: 2px;
    flex-shrink: 0;
}

/* 横向对比条 */
.bar-group-chart_9eaa3caa {
    margin-bottom: 30px;
}

.bar-header-chart_9eaa3caa {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
    flex-wrap: wrap;
    gap: 5px;
}

.bar-label-chart_9eaa3caa {
    font-size: 15px;
    font-weight: 600;
    color: #333;
    word-wrap: break-word;
}

.bar-unit-chart_9eaa3caa {
    font-size: 13px;
    color: #666;
    white-space: nowrap;
}

.bars-container-chart_9eaa3caa {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.bar-row-chart_9eaa3caa {
    display: flex;
    align-items: center;
    gap: 10px;
    position: relative;
    padding-right: 30px;
}

.item-name-label-chart_9eaa3caa {
    width: 100px;
    font-size: 13px;
    color: #666;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex-shrink: 0;
}

.bar-track-chart_9eaa3caa {
    flex: 1;
    height: 40px;
    background: #f5f5f5;
    border-radius: 6px;
    overflow: hidden;
    position: relative;
    min-width: 0;
}

.bar-fill-chart_9eaa3caa {
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding-right: 10px;
    font-size: 13px;
    font-weight: 600;
    color: white;
    transition: width 1s ease-out;
    border-radius: 6px;
    white-space: nowrap;
    overflow: hidden;
}

.winner-badge-chart_9eaa3caa {
    width: 22px;
    height: 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #ffd700;
    border-radius: 50%;
    font-size: 11px;
    flex-shrink: 0;
    position: absolute;
    right: 2px;
    top: 50%;
    transform: translateY(-50%);
}

/* 图表容器 - 白色背景 */
.chart-row-chart_9eaa3caa {
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
    margin-bottom: 30px;
}

.chart-box-chart_9eaa3caa {
    background: white;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
    min-width: 0;
    overflow: hidden;
}

.chart-box-chart_9eaa3caa h3 {
    font-size: 16px;
    margin-bottom: 15px;
    color: #333;
    word-wrap: break-word;
}

.chart-box-chart_9eaa3caa &gt;div {
    width: 100%;
    overflow: hidden;
}

/* 对比表格 - 白色背景 */
.table-wrapper-chart_9eaa3caa {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.data-table-chart_9eaa3caa {
    width: 100%;
    min-width: 600px;
    border-collapse: collapse;
    background: white;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
}

.data-table-chart_9eaa3caa th {
    background: #fafafa;
    padding: 14px 12px;
    text-align: left;
    font-weight: 600;
    color: #333;
    border-bottom: 2px solid #e8e8e8;
    font-size: 13px;
    white-space: nowrap;
}

/* ✅ 修改3: 表格单元格 */
.data-table-chart_9eaa3caa td {
    padding: 14px 12px;
    border-bottom: 1px solid #f0f0f0;
    font-size: 13px;
    color: #333;  /* 原来是 #666 */
    word-wrap: break-word;
}


.data-table-chart_9eaa3caa tr:hover {
    background: #fafafa;
}

.data-table-chart_9eaa3caa .highlight {
    background: #e6f7ff;
    color: #1890ff;
    font-weight: 600;
}

.category-header-chart_9eaa3caa {
    background: #f0f0f0 !important;
    font-weight: 700 !important;
    color: #1a1a1a !important;
}

/* 结论区域 - 添加白色背景框 */
.conclusion-chart_9eaa3caa {
    background: white;
    color: #333;
    border-radius: 12px;
    padding: 30px;
    margin-top: 30px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.08);
}

.conclusion-chart_9eaa3caa h2 {
    font-size: 22px;
    margin-bottom: 20px;
    color: #1a1a1a;
    text-align: center;
}

.conclusion-grid-chart_9eaa3caa {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 20px;
    margin-top: 25px;
}

.conclusion-item-chart_9eaa3caa {
    background: #fafafa;
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid #1890ff;
    min-width: 0;
    overflow: hidden;
}

.conclusion-item-chart_9eaa3caa h3 {
    font-size: 17px;
    margin-bottom: 12px;
    color: #1a1a1a;
    word-wrap: break-word;
}

/* ✅ 修改6: 结论区域段落 */
.conclusion-item-chart_9eaa3caa p {
    font-size: 13px;
    line-height: 1.6;
    margin-bottom: 8px;
    color: #333;  /* 原来是 #666 */
    word-wrap: break-word;
    overflow-wrap: break-word;
}


.conclusion-item-chart_9eaa3caa strong {
    color: #1a1a1a;
}

/* 星星评分样式 */
.rating-stars-chart_9eaa3caa {
    display: inline-flex;
    align-items: center;
    gap: 2px;
}

.rating-stars-chart_9eaa3caa .star {
    font-size: 18px;
    line-height: 1;
}

.rating-stars-chart_9eaa3caa .star.full {
    color: #ffd700;
}

.rating-stars-chart_9eaa3caa .star.empty {
    color: #ddd;
}

.rating-stars-chart_9eaa3caa .star.partial {
    position: relative;
    color: #ddd;
}

.rating-stars-chart_9eaa3caa .star.partial::before {
    content: '★';
    position: absolute;
    left: 0;
    color: #ffd700;
    overflow: hidden;
    width: var(--fill-width, 50%);
}

/* ✅ 修改7: 星星评分数字 */
.rating-stars-chart_9eaa3caa .rating-number {
    margin-left: 6px;
    font-size: 14px;
    color: #333;  /* 原来是 #666 */
    font-weight: normal;
}

/* 响应式优化 */
@media (max-width: 1024px) {
    .chart-row-chart_9eaa3caa {
        grid-template-columns: 1fr;
    }

    .overview-cards-chart_9eaa3caa {
        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    }
}

@media (max-width: 768px) {
    .compare-container-chart_9eaa3caa {
        padding: 0 10px;
    }

    .compare-header-chart_9eaa3caa {
        padding: 20px 15px;
    }

    .compare-header-chart_9eaa3caa h1 {
        font-size: 24px;
    }

    .compare-header-chart_9eaa3caa .subtitle {
        font-size: 14px;
    }

    .chart-row-chart_9eaa3caa {
        grid-template-columns: 1fr;
        gap: 15px;
    }

    .overview-cards-chart_9eaa3caa {
        grid-template-columns: 1fr;
        gap: 15px;
    }

    .overview-card-chart_9eaa3caa {
        padding: 15px;
    }

    .overview-card-chart_9eaa3caa h3 {
        font-size: 18px;
    }

    .overview-card-chart_9eaa3caa .price-tag {
        font-size: 20px;
    }

    .overview-card-chart_9eaa3caa .specs {
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .comparison-section-chart_9eaa3caa {
        padding: 15px;
    }

    .section-title-chart_9eaa3caa {
        font-size: 16px;
        flex-wrap: wrap;
    }

    /* 保持深色 */
    .item-name-label-chart_9eaa3caa {
        color: #333;  /* 原来是 #666 */
    }

    .bar-unit-chart_9eaa3caa {
        color: #555;  /* 原来是 #666 */
    }

    .rating-stars-chart_9eaa3caa .rating-number {
        color: #333;  /* 原来是 #666 */
    }    
    .bar-fill-chart_9eaa3caa {
        font-size: 11px;
        padding-right: 6px;
    }

    .bar-track-chart_9eaa3caa {
        height: 36px;
    }

    .bar-label-chart_9eaa3caa {
        font-size: 14px;
    }

    /* ✅ 修改4: 横向柱状图单位 */
    .bar-unit-chart_9eaa3caa {
        font-size: 13px;
        color: #555;  /* 原来是 #666 */
        white-space: nowrap;
    }
    .winner-badge-chart_9eaa3caa {
        width: 20px;
        height: 20px;
        font-size: 10px;
        right: 2px;
    }

    .bar-row-chart_9eaa3caa {
        padding-right: 24px;
    }

    .chart-box-chart_9eaa3caa {
        padding: 15px;
    }

    .chart-box-chart_9eaa3caa h3 {
        font-size: 15px;
        margin-bottom: 12px;
    }

    .data-table-chart_9eaa3caa {
        min-width: 500px;
    }

    .data-table-chart_9eaa3caa th,
    .data-table-chart_9eaa3caa td {
        padding: 10px 8px;
        font-size: 12px;
    }

    .conclusion-chart_9eaa3caa {
        padding: 20px 15px;
    }

    .conclusion-chart_9eaa3caa h2 {
        font-size: 18px;
    }

    .conclusion-grid-chart_9eaa3caa {
        grid-template-columns: 1fr;
        gap: 15px;
    }

    .conclusion-item-chart_9eaa3caa {
        padding: 15px;
    }

    .conclusion-item-chart_9eaa3caa h3 {
        font-size: 16px;
    }

    .conclusion-item-chart_9eaa3caa p {
        font-size: 12px;
    }

    .rating-stars-chart_9eaa3caa .star {
        font-size: 16px;
    }

    .rating-stars-chart_9eaa3caa .rating-number {
        font-size: 12px;
    }
}

@media (max-width: 480px) {
    .compare-header-chart_9eaa3caa h1 {
        font-size: 20px;
    }

    .compare-header-chart_9eaa3caa .subtitle {
        font-size: 13px;
    }

    .overview-card-chart_9eaa3caa h3 {
        font-size: 16px;
    }

    .overview-card-chart_9eaa3caa .price-tag {
        font-size: 18px;
    }

    .spec-item-chart_9eaa3caa .value {
        font-size: 13px;
    }

/* ✅ 修改5: 横向柱状图项目名 */
.item-name-label-chart_9eaa3caa {
    width: 100px;
    font-size: 13px;
    color: #333;  /* 原来是 #666 */
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex-shrink: 0;
}

    .bar-fill-chart_9eaa3caa {
        font-size: 10px;
        padding-right: 4px;
    }

    .bar-track-chart_9eaa3caa {
        height: 32px;
    }

    .bar-row-chart_9eaa3caa {
        gap: 6px;
        padding-right: 22px;
    }

    .winner-badge-chart_9eaa3caa {
        width: 18px;
        height: 18px;
        font-size: 9px;
        right: 1px;
    }

    .data-table-chart_9eaa3caa {
        min-width: 400px;
    }
}

/* 确保ECharts容器不溢出 */
.chart-box-chart_9eaa3caa [id^=&quot;chart-&quot;] {
    max-width: 100%;
    overflow: hidden;
}&lt;/style&gt;
        &lt;div class=&quot;compare-container-chart_9eaa3caa&quot;&gt;
            &lt;div class=&quot;compare-header-chart_9eaa3caa&quot;&gt;
                &lt;h1&gt;
                    五类固态硬盘多维对比看板
                &lt;/h1&gt;
                &lt;div class=&quot;subtitle&quot;&gt;
                    从数据保持、耐久性与适用场景全面分析
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;overview-cards-chart_9eaa3caa&quot;&gt;
                &lt;div class=&quot;overview-card-chart_9eaa3caa&quot; style=&quot;border-top-color: #FF6B6B&quot;&gt;
                    &lt;h3&gt;
                        消费级SATA SSD
                    &lt;/h3&gt;
                    &lt;div class=&quot;card-subtitle&quot;&gt;
                        TLC NAND
                    &lt;/div&gt;
                    &lt;div class=&quot;price-tag&quot; style=&quot;color: #FF6B6B&quot;&gt;
                        ¥500-1000
                    &lt;/div&gt;
                    &lt;div class=&quot;specs&quot;&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                P/E周期
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                500–1000次
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                30°C下标称保留
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                1年
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;overview-card-chart_9eaa3caa&quot; style=&quot;border-top-color: #4ECDC4&quot;&gt;
                    &lt;h3&gt;
                        企业级U.2 NVMe
                    &lt;/h3&gt;
                    &lt;div class=&quot;card-subtitle&quot;&gt;
                        eTLC NAND
                    &lt;/div&gt;
                    &lt;div class=&quot;price-tag&quot; style=&quot;color: #4ECDC4&quot;&gt;
                        ¥3000+
                    &lt;/div&gt;
                    &lt;div class=&quot;specs&quot;&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                P/E周期
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                3000+次
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                高温工况下保证
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                3个月
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;overview-card-chart_9eaa3caa&quot; style=&quot;border-top-color: #45B7D1&quot;&gt;
                    &lt;h3&gt;
                        工业级SSD
                    &lt;/h3&gt;
                    &lt;div class=&quot;card-subtitle&quot;&gt;
                        SLC/iMLC NAND
                    &lt;/div&gt;
                    &lt;div class=&quot;price-tag&quot; style=&quot;color: #45B7D1&quot;&gt;
                        ¥2000+
                    &lt;/div&gt;
                    &lt;div class=&quot;specs&quot;&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                P/E周期
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                10万+次
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                宽温支持
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                是
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                保留时间
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                5–10年
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;overview-card-chart_9eaa3caa&quot; style=&quot;border-top-color: #96CEB4&quot;&gt;
                    &lt;h3&gt;
                        QLC消费盘
                    &lt;/h3&gt;
                    &lt;div class=&quot;card-subtitle&quot;&gt;
                        QLC NAND
                    &lt;/div&gt;
                    &lt;div class=&quot;price-tag&quot; style=&quot;color: #96CEB4&quot;&gt;
                        ¥300-600
                    &lt;/div&gt;
                    &lt;div class=&quot;specs&quot;&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                P/E周期
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                100–500次
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                新盘保留
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                6–12个月
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;overview-card-chart_9eaa3caa&quot; style=&quot;border-top-color: #FFEAA7&quot;&gt;
                    &lt;h3&gt;
                        归档专用SSD
                    &lt;/h3&gt;
                    &lt;div class=&quot;card-subtitle&quot;&gt;
                        定制SLC+刷新机制
                    &lt;/div&gt;
                    &lt;div class=&quot;price-tag&quot; style=&quot;color: #FFEAA7&quot;&gt;
                        ¥5000+
                    &lt;/div&gt;
                    &lt;div class=&quot;specs&quot;&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                P/E周期
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                5万+次
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                内置主动刷新
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                是
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;spec-item-chart_9eaa3caa&quot;&gt;
                            &lt;div class=&quot;label&quot;&gt;
                                保留时间
                            &lt;/div&gt;
                            &lt;div class=&quot;value&quot;&gt;
                                10年以上
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;comparison-section-chart_9eaa3caa&quot;&gt;
                &lt;h2 class=&quot;section-title-chart_9eaa3caa&quot;&gt;
                    核心指标对比
                &lt;/h2&gt;
                &lt;div class=&quot;bar-group-chart_9eaa3caa&quot;&gt;
                    &lt;div class=&quot;bar-header-chart_9eaa3caa&quot;&gt;
                        &lt;span class=&quot;bar-label-chart_9eaa3caa&quot;&gt;30°C断电保留&lt;/span&gt;&lt;span class=&quot;bar-unit-chart_9eaa3caa&quot;&gt;年&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;bars-container-chart_9eaa3caa&quot;&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;消费级SATA SSD&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;10.0%&quot; style=&quot;background: #FF6B6B; width: 0%&quot;&gt;
                                    1 年
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;企业级U.2 NVMe&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;2.5%&quot; style=&quot;background: #4ECDC4; width: 0%&quot;&gt;
                                    0.25 年
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;工业级SSD&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;75.0%&quot; style=&quot;background: #45B7D1; width: 0%&quot;&gt;
                                    7.5 年
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;QLC消费盘&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;7.5%&quot; style=&quot;background: #96CEB4; width: 0%&quot;&gt;
                                    0.75 年
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;归档专用SSD&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;100.0%&quot; style=&quot;background: #FFEAA7; width: 0%&quot;&gt;
                                    10 年
                                &lt;/div&gt;
                            &lt;/div&gt;&lt;span class=&quot;winner-badge-chart_9eaa3caa&quot;&gt;🏆&lt;/span&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;bar-group-chart_9eaa3caa&quot;&gt;
                    &lt;div class=&quot;bar-header-chart_9eaa3caa&quot;&gt;
                        &lt;span class=&quot;bar-label-chart_9eaa3caa&quot;&gt;40°C断电保留&lt;/span&gt;&lt;span class=&quot;bar-unit-chart_9eaa3caa&quot;&gt;月&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;bars-container-chart_9eaa3caa&quot;&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;消费级SATA SSD&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;7.1%&quot; style=&quot;background: #FF6B6B; width: 0%&quot;&gt;
                                    6 月
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;企业级U.2 NVMe&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;1.8%&quot; style=&quot;background: #4ECDC4; width: 0%&quot;&gt;
                                    1.5 月
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;工业级SSD&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;42.9%&quot; style=&quot;background: #45B7D1; width: 0%&quot;&gt;
                                    36 月
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;QLC消费盘&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;3.6%&quot; style=&quot;background: #96CEB4; width: 0%&quot;&gt;
                                    3 月
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;归档专用SSD&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;100.0%&quot; style=&quot;background: #FFEAA7; width: 0%&quot;&gt;
                                    84 月
                                &lt;/div&gt;
                            &lt;/div&gt;&lt;span class=&quot;winner-badge-chart_9eaa3caa&quot;&gt;🏆&lt;/span&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                &lt;div class=&quot;bar-group-chart_9eaa3caa&quot;&gt;
                    &lt;div class=&quot;bar-header-chart_9eaa3caa&quot;&gt;
                        &lt;span class=&quot;bar-label-chart_9eaa3caa&quot;&gt;典型P/E周期&lt;/span&gt;&lt;span class=&quot;bar-unit-chart_9eaa3caa&quot;&gt;次&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;bars-container-chart_9eaa3caa&quot;&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;消费级SATA SSD&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;0.8%&quot; style=&quot;background: #FF6B6B; width: 0%&quot;&gt;
                                    750 次
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;企业级U.2 NVMe&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;3.0%&quot; style=&quot;background: #4ECDC4; width: 0%&quot;&gt;
                                    3000 次
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;工业级SSD&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;100.0%&quot; style=&quot;background: #45B7D1; width: 0%&quot;&gt;
                                    100000 次
                                &lt;/div&gt;
                            &lt;/div&gt;&lt;span class=&quot;winner-badge-chart_9eaa3caa&quot;&gt;🏆&lt;/span&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;QLC消费盘&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;0.3%&quot; style=&quot;background: #96CEB4; width: 0%&quot;&gt;
                                    300 次
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;bar-row-chart_9eaa3caa&quot;&gt;
                            &lt;span class=&quot;item-name-label-chart_9eaa3caa&quot;&gt;归档专用SSD&lt;/span&gt;
                            &lt;div class=&quot;bar-track-chart_9eaa3caa&quot;&gt;
                                &lt;div class=&quot;bar-fill-chart_9eaa3caa&quot; data-width=&quot;50.0%&quot; style=&quot;background: #FFEAA7; width: 0%&quot;&gt;
                                    50000 次
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;comparison-section-chart_9eaa3caa&quot;&gt;
                &lt;h2 class=&quot;section-title-chart_9eaa3caa&quot;&gt;
                    详细参数对比表
                &lt;/h2&gt;
                &lt;div class=&quot;table-wrapper-chart_9eaa3caa&quot;&gt;
                    &lt;div class=&quot;table-scroll-wrapper&quot;&gt;
                        &lt;table class=&quot;data-table-chart_9eaa3caa&quot;&gt;
                            &lt;thead&gt;
                                &lt;tr class=&quot;firstRow&quot;&gt;
                                    &lt;th&gt;
                                        对比项
                                    &lt;/th&gt;
                                    &lt;th&gt;
                                        消费级SATA SSD
                                    &lt;/th&gt;
                                    &lt;th&gt;
                                        企业级U.2 NVMe
                                    &lt;/th&gt;
                                    &lt;th&gt;
                                        工业级SSD
                                    &lt;/th&gt;
                                    &lt;th&gt;
                                        QLC消费盘
                                    &lt;/th&gt;
                                    &lt;th&gt;
                                        归档专用SSD
                                    &lt;/th&gt;
                                &lt;/tr&gt;
                            &lt;/thead&gt;
                            &lt;tbody&gt;
                                &lt;tr&gt;
                                    &lt;td class=&quot;category-header-chart_9eaa3caa&quot; colspan=&quot;6&quot;&gt;
                                        数据保持能力
                                    &lt;/td&gt;
                                &lt;/tr&gt;
                                &lt;tr&gt;
                                    &lt;td&gt;
                                        30°C断电保留
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        1 年
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        0.25 年
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        7.5 年
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        0.75 年
                                    &lt;/td&gt;
                                    &lt;td class=&quot;highlight&quot;&gt;
                                        10 年 ✓
                                    &lt;/td&gt;
                                &lt;/tr&gt;
                                &lt;tr&gt;
                                    &lt;td&gt;
                                        40°C断电保留
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        6 月
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        1.5 月
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        36 月
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        3 月
                                    &lt;/td&gt;
                                    &lt;td class=&quot;highlight&quot;&gt;
                                        84 月 ✓
                                    &lt;/td&gt;
                                &lt;/tr&gt;
                                &lt;tr&gt;
                                    &lt;td class=&quot;category-header-chart_9eaa3caa&quot; colspan=&quot;6&quot;&gt;
                                        耐久性
                                    &lt;/td&gt;
                                &lt;/tr&gt;
                                &lt;tr&gt;
                                    &lt;td&gt;
                                        典型P/E周期
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        750 次
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        3000 次
                                    &lt;/td&gt;
                                    &lt;td class=&quot;highlight&quot;&gt;
                                        100000 次 ✓
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        300 次
                                    &lt;/td&gt;
                                    &lt;td&gt;
                                        50000 次
                                    &lt;/td&gt;
                                &lt;/tr&gt;
                            &lt;/tbody&gt;
                        &lt;/table&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;conclusion-chart_9eaa3caa&quot;&gt;
                &lt;h2&gt;
                    综合评价与建议
                &lt;/h2&gt;
                &lt;div class=&quot;conclusion-grid-chart_9eaa3caa&quot;&gt;
                    &lt;div class=&quot;conclusion-item-chart_9eaa3caa&quot;&gt;
                        &lt;h3&gt;
                            🏆 消费级SATA SSD
                        &lt;/h3&gt;
                        &lt;p&gt;
                            &lt;strong&gt;推荐指数:&lt;/strong&gt; &lt;span class=&quot;rating-stars-chart_9eaa3caa&quot;&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star empty&quot;&gt;☆&lt;/span&gt;&lt;span class=&quot;star empty&quot;&gt;☆&lt;/span&gt; &lt;span class=&quot;rating-number&quot;&gt;3.0/5.0&lt;/span&gt;&lt;/span&gt;
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;核心优势:&lt;/strong&gt; 性价比高普及度广
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;主要不足:&lt;/strong&gt; 高温和磨损下保持力骤降
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;适合人群:&lt;/strong&gt; 日常使用非长期归档
                        &lt;/p&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;conclusion-item-chart_9eaa3caa&quot;&gt;
                        &lt;h3&gt;
                            🏆 企业级U.2 NVMe
                        &lt;/h3&gt;
                        &lt;p&gt;
                            &lt;strong&gt;推荐指数:&lt;/strong&gt; &lt;span class=&quot;rating-stars-chart_9eaa3caa&quot;&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star empty&quot;&gt;☆&lt;/span&gt; &lt;span class=&quot;rating-number&quot;&gt;4.0/5.0&lt;/span&gt;&lt;/span&gt;
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;核心优势:&lt;/strong&gt; 高耐久稳定可靠
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;主要不足:&lt;/strong&gt; 成本高昂且断电保留仍受限
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;适合人群:&lt;/strong&gt; 数据中心短期热备
                        &lt;/p&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;conclusion-item-chart_9eaa3caa&quot;&gt;
                        &lt;h3&gt;
                            🏆 工业级SSD
                        &lt;/h3&gt;
                        &lt;p&gt;
                            &lt;strong&gt;推荐指数:&lt;/strong&gt; &lt;span class=&quot;rating-stars-chart_9eaa3caa&quot;&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt; &lt;span class=&quot;rating-number&quot;&gt;5.0/5.0&lt;/span&gt;&lt;/span&gt;
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;核心优势:&lt;/strong&gt; 超长保留与宽温适应
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;主要不足:&lt;/strong&gt; 价格昂贵
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;适合人群:&lt;/strong&gt; 军工航天等严苛场景
                        &lt;/p&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;conclusion-item-chart_9eaa3caa&quot;&gt;
                        &lt;h3&gt;
                            🏆 QLC消费盘
                        &lt;/h3&gt;
                        &lt;p&gt;
                            &lt;strong&gt;推荐指数:&lt;/strong&gt; &lt;span class=&quot;rating-stars-chart_9eaa3caa&quot;&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star empty&quot;&gt;☆&lt;/span&gt;&lt;span class=&quot;star empty&quot;&gt;☆&lt;/span&gt;&lt;span class=&quot;star empty&quot;&gt;☆&lt;/span&gt; &lt;span class=&quot;rating-number&quot;&gt;2.0/5.0&lt;/span&gt;&lt;/span&gt;
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;核心优势:&lt;/strong&gt; 容量大价格低
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;主要不足:&lt;/strong&gt; 保持力最差尤其在高温下
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;适合人群:&lt;/strong&gt; 不适合任何重要数据存储
                        &lt;/p&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;conclusion-item-chart_9eaa3caa&quot;&gt;
                        &lt;h3&gt;
                            🏆 归档专用SSD
                        &lt;/h3&gt;
                        &lt;p&gt;
                            &lt;strong&gt;推荐指数:&lt;/strong&gt; &lt;span class=&quot;rating-stars-chart_9eaa3caa&quot;&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt;&lt;span class=&quot;star full&quot;&gt;★&lt;/span&gt; &lt;span class=&quot;rating-number&quot;&gt;5.0/5.0&lt;/span&gt;&lt;/span&gt;
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;核心优势:&lt;/strong&gt; 十年以上保留与主动维护机制
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;主要不足:&lt;/strong&gt; 专有生态成本极高
                        &lt;/p&gt;
                        &lt;p&gt;
                            &lt;strong&gt;适合人群:&lt;/strong&gt; 国家级档案存储
                        &lt;/p&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;&lt;script&gt;(function() {
    // 横向条形图动画
    function animateBars() {
        const bars = document.querySelectorAll('.bar-fill-chart_9eaa3caa');

        const observer = new IntersectionObserver((entries) =&gt;{
            entries.forEach(entry =&gt; {
                if (entry.isIntersecting) {
                    const bar = entry.target;
                    const width = bar.getAttribute('data-width');

                    setTimeout(() =&gt; {
                        bar.style.width = width;
                    }, 100);

                    observer.unobserve(bar);
                }
            });
        }, {
            threshold: 0.3
        });

        bars.forEach(bar =&gt; observer.observe(bar));
    }

    // 页面加载后执行
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', animateBars);
    } else {
        animateBars();
    }
})();&lt;/script&gt;
        &lt;p&gt;
            该看板清晰表明：&lt;strong&gt;SSD的数据保持能力与其定位高度相关&lt;/strong&gt;。消费级产品虽满足日常使用，但在断电归档场景下风险显著；而工业级与归档专用产品通过SLC NAND、强化ECC与主动刷新机制，实现了数量级的提升。
        &lt;/p&gt;
        &lt;h3 id=&quot;_3&quot;&gt;
            关键变量对保存期限的影响
        &lt;/h3&gt;
        &lt;p&gt;
            除SSD类型外，以下两个外部因素会显著改变实际保存时间：
        &lt;/p&gt;
        &lt;ul class=&quot; list-paddingleft-2&quot;&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;环境温度&lt;/strong&gt;：每升高10°C，数据保持时间约减半。例如，一块标称30°C下可保存1年的TLC SSD，在40°C环境中仅能维持约6个月，在55°C极端环境下可能缩短至数周 &lt;sup&gt;&lt;a href=&quot;http://m.bjnews.com.cn/detail/1772675024129004.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;卫星载荷数据存储用什么品牌SSD不丢数据？——航天级数据完整性保障技术解析&quot;&gt;2&lt;/a&gt;,&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;写入磨损程度&lt;/strong&gt;：接近寿命终点的SSD，其氧化层损伤加剧，电荷泄漏加速，导致数据保持能力大幅下降。实测显示，重度磨损的TLC SSD在断电两年后即出现文件损坏与不可校正扇区增长，而同型号新盘虽能通过校验，但硬件ECC恢复值已显著上升，预示潜在风险 &lt;sup&gt;&lt;a href=&quot;https://m.itbear.com.cn/html/2025-04/789608.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;闲置两年未通电，SSD竟遭遇数据丢失与性能下滑！-业界动态-ITBear比尔科技&quot;&gt;6&lt;/a&gt;,&lt;a href=&quot;https://diy.zol.com.cn/975/9752153.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;断电两年后，SSD数据丢失和性能下降测试结果公布_游戏硬件显卡-中关村在线&quot;&gt;10&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;
            因此，评估SSD断电保存能力时，必须结合具体型号、存储环境与使用状态综合判断，不可仅依赖“1年”等笼统说法。
        &lt;/p&gt;
        &lt;h2 id=&quot;_4&quot;&gt;
            三、影响数据保存的关键因素
        &lt;/h2&gt;
        &lt;p&gt;
            固态硬盘在断电状态下的数据保持能力并非由单一变量决定，而是多种物理与使用因素共同作用的结果。理解这些机制有助于用户科学评估风险并采取针对性措施。
        &lt;/p&gt;
        &lt;h3 id=&quot;nand&quot;&gt;
            NAND闪存类型：决定数据稳定性的根本
        &lt;/h3&gt;
        &lt;p&gt;
            NAND闪存的存储单元结构直接决定了其电荷保持能力，不同类型的NAND在电压区间密度、纠错难度和耐久性方面存在本质差异：
        &lt;/p&gt;
        &lt;ul class=&quot; list-paddingleft-2&quot;&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;SLC（单层单元）&lt;/strong&gt;：每单元仅存储1位数据，具有最宽的电压区分度，抗干扰能力强，电荷泄漏最慢，因此数据保留时间最长 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9020470&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;SSD断电后数据能保存多久？_编程语言-CSDN问答&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;MLC（双层单元）&lt;/strong&gt;：存储2位数据，电压状态翻倍，对阈值漂移更敏感，但仍具备较长保持力 &lt;sup&gt;&lt;a href=&quot;http://tv.sohu.com/v/dXMvNDM5NDEzMzY2LzcwMjA2NTg4Ny5zaHRtbA==.html?channeled=2001040002&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;不同闪存类型固态硬盘数据能保存多久？固态硬盘 电脑知识&quot;&gt;11&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;TLC（三层单元）&lt;/strong&gt;：存储3位数据，电压窗口进一步压缩，需更复杂ECC算法补偿，断电后稳定性显著下降 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;QLC（四层单元）&lt;/strong&gt;：存储4位数据，电压区间极为密集，微小电荷变化即可导致比特翻转，是所有类型中数据保持力最差的 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9020470&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;SSD断电后数据能保存多久？_编程语言-CSDN问答&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;
            排序为：&lt;strong&gt;SLC &amp;gt; MLC &amp;gt; TLC &amp;gt; QLC&lt;/strong&gt;，这一顺序也反映了其在工业级到消费级应用中的分布逻辑 &lt;sup&gt;&lt;a href=&quot;http://m.bjnews.com.cn/detail/1772675024129004.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;卫星载荷数据存储用什么品牌SSD不丢数据？——航天级数据完整性保障技术解析&quot;&gt;2&lt;/a&gt;,&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;。
        &lt;/p&gt;
        &lt;h3 id=&quot;_5&quot;&gt;
            环境温度：加速数据衰减的核心外部变量
        &lt;/h3&gt;
        &lt;p&gt;
            温度是影响电子活性的关键因素。根据Arrhenius效应，温度每升高10°C，化学反应速率（此处为电荷泄漏）约翻倍，导致数据保持时间减半：
        &lt;/p&gt;
        &lt;ul class=&quot; list-paddingleft-2&quot;&gt;
            &lt;li&gt;
                &lt;p&gt;
                    在&lt;strong&gt;30°C&lt;/strong&gt;环境下，典型TLC SSD可维持约&lt;strong&gt;1年&lt;/strong&gt;的数据完整性；
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    升至&lt;strong&gt;40°C&lt;/strong&gt;时，保持时间缩短至约&lt;strong&gt;6个月&lt;/strong&gt;；
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    若存放于&lt;strong&gt;55°C&lt;/strong&gt;的高温环境（如阳光直射的车内），数据可能在&lt;strong&gt;数周甚至一周内&lt;/strong&gt;即发生不可逆损坏 &lt;sup&gt;&lt;a href=&quot;http://m.bjnews.com.cn/detail/1772675024129004.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;卫星载荷数据存储用什么品牌SSD不丢数据？——航天级数据完整性保障技术解析&quot;&gt;2&lt;/a&gt;,&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;
            华为明确建议，已存储数据的SSD在≤40°C环境中最长放置不得超过3个月，正是基于此物理规律 &lt;sup&gt;&lt;a href=&quot;https://support.huawei.cn/enterprise/zh/doc/EDOC1100233665/405e63b2&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;环境参数 - OceanStor 6x10, 18x10系列 6.1.x &amp;amp; V700R001 产品描述 - 华为&quot;&gt;7&lt;/a&gt;,&lt;a href=&quot;https://support.huawei.cn/enterprise/zh/doc/EDOC1100194142/73cde4ae&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;环境要求（OceanStor Pacific 9540 Kunpeng） - OceanStor Pacific系列 8.1.0 产品描述 07 - 华为&quot;&gt;8&lt;/a&gt;,&lt;a href=&quot;https://support.huawei.cn/enterprise/zh/doc/EDOC1100354515/38643951&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;环境参数 - OceanProtect X9000K 1.5.0 产品描述 01 - 华为&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;。
        &lt;/p&gt;
        &lt;h3 id=&quot;pe&quot;&gt;
            写入磨损程度（P/E周期）：随使用而恶化的内在隐患
        &lt;/h3&gt;
        &lt;p&gt;
            随着编程/擦除（P/E）循环次数增加，NAND闪存的隧道氧化层会逐渐损伤，电子俘获能力下降，浮栅中的电荷更容易逃逸：
        &lt;/p&gt;
        &lt;ul class=&quot; list-paddingleft-2&quot;&gt;
            &lt;li&gt;
                &lt;p&gt;
                    全新SSD氧化层完整，电荷稳定性高；
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    接近TBW寿命终点的SSD，其数据保持能力可能比新盘下降&lt;strong&gt;50%以上&lt;/strong&gt;，严重者可达&lt;strong&gt;60%以上&lt;/strong&gt; &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9020470&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;SSD断电后数据能保存多久？_编程语言-CSDN问答&quot;&gt;1&lt;/a&gt;,&lt;a href=&quot;https://m.itbear.com.cn/html/2025-04/789608.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;闲置两年未通电，SSD竟遭遇数据丢失与性能下滑！-业界动态-ITBear比尔科技&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    HTWingNut实测显示，一块写入量远超额定值的“磨损”组SSD，在两年断电后出现文件hash不匹配与不可校正扇区增长，而“全新”组虽通过校验，但硬件ECC恢复值已显著上升，预示潜在错误积累 &lt;sup&gt;&lt;a href=&quot;https://diy.zol.com.cn/975/9752153.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;断电两年后，SSD数据丢失和性能下降测试结果公布_游戏硬件显卡-中关村在线&quot;&gt;10&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
        &lt;/ul&gt;
        &lt;h3 id=&quot;_6&quot;&gt;
            存储前数据状态与制造工艺
        &lt;/h3&gt;
        &lt;p&gt;
            其他因素同样不容忽视：
        &lt;/p&gt;
        &lt;ul class=&quot; list-paddingleft-2&quot;&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;刚写入即断电风险较高&lt;/strong&gt;：新写入的数据尚未经历充分的电荷稳定过程，浮栅电压处于亚稳态，比长期稳定的“冷数据”更易发生漂移 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;制造工艺与纠错技术&lt;/strong&gt;：企业级与工业级SSD采用更强的LDPC ECC、定制固件、主动刷新机制等技术来延缓数据衰减。例如天硕（TOPSSD）X55系列星载SSD通过强化ECC与智能刷新保障航天级数据完整性 &lt;sup&gt;&lt;a href=&quot;http://m.bjnews.com.cn/detail/1772675024129004.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;卫星载荷数据存储用什么品牌SSD不丢数据？——航天级数据完整性保障技术解析&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
        &lt;/ul&gt;
        &lt;h3 id=&quot;_7&quot;&gt;
            关键影响因素汇总表
        &lt;/h3&gt;
        &lt;div class=&quot;table-scroll-wrapper&quot;&gt;
            &lt;table&gt;
                &lt;thead&gt;
                    &lt;tr class=&quot;firstRow&quot;&gt;
                        &lt;th&gt;
                            影响因素
                        &lt;/th&gt;
                        &lt;th&gt;
                            作用机制
                        &lt;/th&gt;
                        &lt;th&gt;
                            典型表现
                        &lt;/th&gt;
                        &lt;th&gt;
                            是否可控
                        &lt;/th&gt;
                    &lt;/tr&gt;
                &lt;/thead&gt;
                &lt;tbody&gt;
                    &lt;tr&gt;
                        &lt;td&gt;
                            NAND类型
                        &lt;/td&gt;
                        &lt;td&gt;
                            电压区间密度决定电荷稳定性
                        &lt;/td&gt;
                        &lt;td&gt;
                            SLC可达10年，QLC不足1年 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9020470&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;SSD断电后数据能保存多久？_编程语言-CSDN问答&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            否（购买时选择）
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr&gt;
                        &lt;td&gt;
                            环境温度
                        &lt;/td&gt;
                        &lt;td&gt;
                            每升高10°C，电荷泄漏速率翻倍
                        &lt;/td&gt;
                        &lt;td&gt;
                            30°C下1年 → 40°C下6个月 → 55°C下数周 &lt;sup&gt;&lt;a href=&quot;http://m.bjnews.com.cn/detail/1772675024129004.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;卫星载荷数据存储用什么品牌SSD不丢数据？——航天级数据完整性保障技术解析&quot;&gt;2&lt;/a&gt;,&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            是
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr&gt;
                        &lt;td&gt;
                            写入磨损（P/E周期）
                        &lt;/td&gt;
                        &lt;td&gt;
                            氧化层损伤加剧，电子俘获能力下降
                        &lt;/td&gt;
                        &lt;td&gt;
                            接近寿命终点时保持力下降超50% &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9020470&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;SSD断电后数据能保存多久？_编程语言-CSDN问答&quot;&gt;1&lt;/a&gt;,&lt;a href=&quot;https://m.itbear.com.cn/html/2025-04/789608.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;闲置两年未通电，SSD竟遭遇数据丢失与性能下滑！-业界动态-ITBear比尔科技&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            是
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr&gt;
                        &lt;td&gt;
                            数据写入后状态
                        &lt;/td&gt;
                        &lt;td&gt;
                            新写入数据电荷未完全稳定
                        &lt;/td&gt;
                        &lt;td&gt;
                            刚写入即断电风险高于冷数据 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            是
                        &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr&gt;
                        &lt;td&gt;
                            制造工艺与ECC
                        &lt;/td&gt;
                        &lt;td&gt;
                            LDPC、主动刷新等技术补偿电荷损失
                        &lt;/td&gt;
                        &lt;td&gt;
                            工业级SSD内置刷新机制延长保持时间 &lt;sup&gt;&lt;a href=&quot;http://m.bjnews.com.cn/detail/1772675024129004.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;卫星载荷数据存储用什么品牌SSD不丢数据？——航天级数据完整性保障技术解析&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;
                        &lt;/td&gt;
                        &lt;td&gt;
                            否（依赖产品设计）
                        &lt;/td&gt;
                    &lt;/tr&gt;
                &lt;/tbody&gt;
            &lt;/table&gt;
        &lt;/div&gt;
        &lt;p&gt;
            该表综合了JEDEC标准、厂商说明与实测研究结果，为用户识别与管理断电保存风险提供了系统框架 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9020470&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;SSD断电后数据能保存多久？_编程语言-CSDN问答&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;。
        &lt;/p&gt;
        &lt;h2 id=&quot;_8&quot;&gt;
            四、长期存储实用建议
        &lt;/h2&gt;
        &lt;p&gt;
            为最大限度保障固态硬盘在断电状态下的数据安全，应采取科学、主动的管理策略。以下建议基于JEDEC行业标准、主流厂商规范（如Dell、华为）及实测研究结果，聚焦用户可操作的关键措施。
        &lt;/p&gt;
        &lt;h3 id=&quot;1&quot;&gt;
            1. 严格控制存储环境
        &lt;/h3&gt;
        &lt;ul class=&quot; list-paddingleft-2&quot;&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;温度&lt;/strong&gt;：存放环境温度应&lt;strong&gt;≤25°C&lt;/strong&gt;。每升高10°C，数据保持时间约减半；避免将SSD置于阳光直射、暖气旁或密闭车内等高温场所 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;,&lt;a href=&quot;https://post.smzdm.com/p/awmp04d4/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;冷备份常识：U盘、固态硬盘久存数据，必须定期通电？_固态硬盘_什么值得买&quot;&gt;12&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;湿度&lt;/strong&gt;：保持相对湿度在&lt;strong&gt;40%-60% RH&lt;/strong&gt;范围内，防止潮气腐蚀电路板或引发短路 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;物理防护&lt;/strong&gt;：使用防静电袋密封保存，避免灰尘、震动与意外触碰导致接口损伤。
                &lt;/p&gt;
            &lt;/li&gt;
        &lt;/ul&gt;
        &lt;h3 id=&quot;2&quot;&gt;
            2. 实施定期通电刷新
        &lt;/h3&gt;
        &lt;ul class=&quot; list-paddingleft-2&quot;&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;频率&lt;/strong&gt;：建议至少&lt;strong&gt;每6个月通电一次&lt;/strong&gt;，连接至电脑运行数小时 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9074763&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;固态硬盘断电多久会丢失数据？_编程语言-CSDN问答&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;操作方式&lt;/strong&gt;：
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: square;&quot;&gt;
                &lt;li&gt;
                    &lt;p&gt;
                        执行全盘读取命令（如Linux下&lt;code&gt;dd if=/dev/sdX of=/dev/null&lt;/code&gt;），触发SSD后台扫描与ECC纠错机制。
                    &lt;/p&gt;
                &lt;/li&gt;
                &lt;li&gt;
                    &lt;p&gt;
                        运行TRIM指令，帮助控制器识别并刷新潜在错误区块。
                    &lt;/p&gt;
                &lt;/li&gt;
            &lt;/ul&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;企业级参考&lt;/strong&gt;：Dell建议含用户数据的SSD&lt;strong&gt;每2.5个月通电一次，持续至少3周&lt;/strong&gt;，以完成后台维护任务 &lt;sup&gt;&lt;a href=&quot;https://www.dell.com/support/kbdoc/zh-cn/000198930/ssd-data-retention-considerations-when-powering-off-systems-for-a-prolonged-duration?lang=en&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;PowerEdge: Data Retention Occur with SSD or Nvme Drives Due to Prolonged Power off \| Dell 中国&quot;&gt;4&lt;/a&gt;,&lt;a href=&quot;https://www.dell.com/support/kbdoc/zh-cn/000198930/poweredge-%E9%95%B7%E6%99%82%E9%96%93%E9%97%9C%E9%96%89%E9%9B%BB%E6%BA%90-%E5%B0%8E%E8%87%B4-ssd-%E6%88%96-nvme-%E7%A3%81%E7%A2%9F%E6%A9%9F%E7%99%BC%E7%94%9F%E8%B3%87%E6%96%99%E4%BF%9D%E7%95%99?lang=tw&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;PowerEdge：長時間關閉電源，導致 SSD 或 NVMe 磁碟機發生資料保留 \| Dell 中国&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
        &lt;/ul&gt;
        &lt;h3 id=&quot;3-ssd&quot;&gt;
            3. 监控SSD健康状态
        &lt;/h3&gt;
        &lt;ul class=&quot; list-paddingleft-2&quot;&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;使用工具&lt;/strong&gt;：通过&lt;code&gt;smartctl&lt;/code&gt;等SMART监控工具定期检查关键属性：
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: square;&quot;&gt;
                &lt;li&gt;
                    &lt;p&gt;
                        &lt;strong&gt;Wear_Leveling_Count&lt;/strong&gt;（磨损均衡计数）：当剩余寿命低于&lt;strong&gt;20%&lt;/strong&gt;时，不推荐用于长期断电存储 &lt;sup&gt;&lt;a href=&quot;http://m.bjnews.com.cn/detail/1772675024129004.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;卫星载荷数据存储用什么品牌SSD不丢数据？——航天级数据完整性保障技术解析&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;。
                    &lt;/p&gt;
                &lt;/li&gt;
                &lt;li&gt;
                    &lt;p&gt;
                        &lt;strong&gt;Reallocated_Sector_Ct&lt;/strong&gt;（重映射扇区数）：数值增长预示物理损坏风险上升。
                    &lt;/p&gt;
                &lt;/li&gt;
                &lt;li&gt;
                    &lt;p&gt;
                        &lt;strong&gt;Uncorrectable_Error_Cnt&lt;/strong&gt;（不可校正错误计数）：直接反映数据完整性隐患 &lt;sup&gt;&lt;a href=&quot;http://m.bjnews.com.cn/detail/1772675024129004.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;卫星载荷数据存储用什么品牌SSD不丢数据？——航天级数据完整性保障技术解析&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;。
                    &lt;/p&gt;
                &lt;/li&gt;
            &lt;/ul&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;操作原则&lt;/strong&gt;：若发现健康度显著下降或错误计数异常，应立即备份数据并更换设备。
                &lt;/p&gt;
            &lt;/li&gt;
        &lt;/ul&gt;
        &lt;h3 id=&quot;4&quot;&gt;
            4. 采用多重备份策略
        &lt;/h3&gt;
        &lt;ul class=&quot; list-paddingleft-2&quot;&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;遵循“3-2-1”原则&lt;/strong&gt;：
                &lt;/p&gt;
            &lt;/li&gt;
            &lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: square;&quot;&gt;
                &lt;li&gt;
                    &lt;p&gt;
                        &lt;strong&gt;3份副本&lt;/strong&gt;：同一数据保留三个独立拷贝。
                    &lt;/p&gt;
                &lt;/li&gt;
                &lt;li&gt;
                    &lt;p&gt;
                        &lt;strong&gt;2种介质&lt;/strong&gt;：至少一种为非SSD介质（如机械硬盘HDD或磁带）。
                    &lt;/p&gt;
                &lt;/li&gt;
                &lt;li&gt;
                    &lt;p&gt;
                        &lt;strong&gt;1份离线&lt;/strong&gt;：一份副本完全断电、物理隔离，防范勒索软件与意外覆盖 &lt;sup&gt;&lt;a href=&quot;https://blog.csdn.net/qq_32775541/article/details/160097543&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;移动硬盘 vs 固态硬盘：别再傻傻分不清，这一篇彻底讲透！-CSDN博客&quot;&gt;13&lt;/a&gt;&lt;/sup&gt;。
                    &lt;/p&gt;
                &lt;/li&gt;
            &lt;/ul&gt;
            &lt;li&gt;
                &lt;p&gt;
                    &lt;strong&gt;归档介质选择&lt;/strong&gt;：对于重要数据长期归档，优先选用工业级SLC SSD或具备主动刷新机制的专用归档SSD，而非普通消费级产品 &lt;sup&gt;&lt;a href=&quot;https://ask.csdn.net/wap/questions/9020470&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot; title=&quot;SSD断电后数据能保存多久？_编程语言-CSDN问答&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;。
                &lt;/p&gt;
            &lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;
            综上，固态硬盘并非被动可靠的冷存储解决方案。唯有通过&lt;strong&gt;低温存放、周期性通电、健康监控与多介质冗余&lt;/strong&gt;四位一体的主动管理，才能有效规避断电带来的数据丢失风险，实现真正意义上的长期安全保存。
        &lt;/p&gt;
    &lt;/div&gt;
&lt;/main&gt;
&lt;footer class=&quot;mt-12 py-6 text-center text-sm&quot; style=&quot;color: #64748B; border-top: 1px solid rgba(59,130,246,0.2);&quot;&gt;
    &lt;p&gt;
        Generated by Qwen
    &lt;/p&gt;
&lt;/footer&gt;&lt;!-- Lightbox Modal --&gt;
&lt;div class=&quot;fixed inset-0 z-50 hidden items-center justify-center lightbox-backdrop&quot; id=&quot;lightbox&quot; style=&quot;display:none !important;&quot;&gt;
    &lt;!-- Close Button --&gt;&lt;button class=&quot;absolute right-2 sm:right-4 top-2 sm:top-4 z-10 rounded-full p-2 sm:p-3 shadow-lg transition-all hover:scale-110&quot; onclick=&quot;closeLightbox()&quot; style=&quot;background: rgba(255,255,255,0.85); color: #0F172A;&quot;&gt;&lt;svg class=&quot;h-4 w-4 sm:h-5 sm:w-5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewbox=&quot;0 0 24 24&quot;&gt;
        &lt;path d=&quot;M18 6 6 18M6 6l12 12&quot;&gt;&lt;/path&gt;
    &lt;/svg&gt;&lt;/button&gt;&lt;!-- Nav Arrows --&gt;&lt;button class=&quot;absolute left-2 sm:left-4 top-1/3 lg:top-1/2 z-10 -translate-y-1/2 rounded-full p-2 sm:p-4 shadow-lg transition-all hover:scale-110&quot; id=&quot;prevBtn&quot; onclick=&quot;prevImage()&quot; style=&quot;background: rgba(255,255,255,0.85); color: #0F172A;&quot;&gt;&lt;svg class=&quot;h-5 w-5 sm:h-6 sm:w-6&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewbox=&quot;0 0 24 24&quot;&gt;
        &lt;path d=&quot;m15 18-6-6 6-6&quot;&gt;&lt;/path&gt;
    &lt;/svg&gt;&lt;/button&gt;&lt;button class=&quot;absolute right-2 sm:right-4 top-1/3 lg:top-1/2 z-10 -translate-y-1/2 rounded-full p-2 sm:p-4 shadow-lg transition-all hover:scale-110&quot; id=&quot;nextBtn&quot; onclick=&quot;nextImage()&quot; style=&quot;background: rgba(255,255,255,0.85); color: #0F172A;&quot;&gt;&lt;svg class=&quot;h-5 w-5 sm:h-6 sm:w-6&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewbox=&quot;0 0 24 24&quot;&gt;
        &lt;path d=&quot;m9 18 6-6-6-6&quot;&gt;&lt;/path&gt;
    &lt;/svg&gt;&lt;/button&gt;&lt;!-- Modal Content --&gt;
    &lt;div class=&quot;mx-2 sm:mx-4 w-full overflow-hidden rounded-2xl sm:rounded-3xl shadow-2xl animate-fadeIn&quot; onclick=&quot;event.stopPropagation()&quot; style=&quot;max-width: 1000px; max-height: 95vh; background: rgba(255,255,255,0.85);&quot;&gt;
        &lt;!-- Image Area --&gt;
        &lt;div class=&quot;relative flex items-center justify-center p-3 sm:p-4&quot; style=&quot;background: linear-gradient(135deg, #F0F9FF, #BAE6FD); height: 55vh;&quot;&gt;
            &lt;img alt=&quot;&quot; class=&quot;max-h-full max-w-full rounded-xl object-contain shadow-lg&quot; id=&quot;lightboxImage&quot; src/&gt;
        &lt;/div&gt;&lt;!-- Thumbnails Bar - 缩略图预览条 --&gt;
        &lt;div class=&quot;flex items-center gap-2 p-3 overflow-x-auto&quot; style=&quot;background: #F0F9FF; border-top: 1px solid rgba(59,130,246,0.2);&quot;&gt;
            &lt;div class=&quot;flex-shrink-0 rounded-full px-3 py-1 text-xs font-medium&quot; id=&quot;imageCounter&quot; style=&quot;background: #3B82F620; color: #3B82F6;&quot;&gt;
                1 / 1
            &lt;/div&gt;
            &lt;div class=&quot;flex gap-2 flex-1 overflow-x-auto&quot; id=&quot;thumbnails&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;&lt;!-- Info Area - 可折叠 --&gt;
        &lt;div class=&quot;overflow-y-auto p-4&quot; style=&quot;max-height: 30vh; border-top: 1px solid rgba(59,130,246,0.2);&quot;&gt;
            &lt;h2 class=&quot;mb-1 text-lg sm:text-xl font-bold&quot; id=&quot;lightboxTitle&quot; style=&quot;color: #0F172A;&quot;&gt;&lt;/h2&gt;
            &lt;p class=&quot;mb-4 text-sm italic&quot; id=&quot;lightboxSubtitle&quot; style=&quot;color: #64748B;&quot;&gt;
                &lt;br/&gt;
            &lt;/p&gt;&lt;!-- Tags --&gt;
            &lt;div class=&quot;mb-4 flex flex-wrap gap-2&quot; id=&quot;lightboxTags&quot;&gt;&lt;/div&gt;&lt;!-- Key Info --&gt;
            &lt;div class=&quot;mb-4 space-y-2&quot; id=&quot;lightboxKeyInfo&quot;&gt;&lt;/div&gt;&lt;!-- Other Info --&gt;
            &lt;div class=&quot;mb-4 space-y-2&quot; id=&quot;lightboxOtherInfo&quot;&gt;&lt;/div&gt;&lt;!-- Links --&gt;
            &lt;div class=&quot;mb-5&quot; id=&quot;lightboxLinksSection&quot;&gt;
                &lt;h3 class=&quot;mb-2 text-sm font-semibold&quot; style=&quot;color: #64748B;&quot;&gt;
                    相关链接
                &lt;/h3&gt;
                &lt;div class=&quot;flex flex-wrap gap-2&quot; id=&quot;lightboxLinks&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;&lt;!-- References --&gt;
            &lt;div class=&quot;mb-5&quot; id=&quot;lightboxRefsSection&quot;&gt;
                &lt;h3 class=&quot;mb-2 text-sm font-semibold&quot; style=&quot;color: #64748B;&quot;&gt;
                    参考文献
                &lt;/h3&gt;
                &lt;div class=&quot;flex flex-wrap gap-2&quot; id=&quot;lightboxRefs&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;flex gap-3&quot;&gt;
                &lt;a class=&quot;inline-flex flex-1 items-center justify-center gap-2 rounded-xl px-4 py-3 text-sm font-semibold text-white shadow-lg transition-all hover:brightness-105&quot; href=&quot;#&quot; id=&quot;lightboxLink&quot; style=&quot;background: linear-gradient(135deg, #3B82F6, #1D4ED8);&quot; target=&quot;_blank&quot;&gt;&lt;svg class=&quot;h-4 w-4&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                    &lt;path d=&quot;M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&quot;&gt;&lt;/path&gt;
                    &lt;polyline points=&quot;15 3 21 3 21 9&quot;&gt;&lt;/polyline&gt;
                    &lt;line x1=&quot;10&quot; x2=&quot;21&quot; y1=&quot;14&quot; y2=&quot;3&quot;&gt;&lt;/line&gt;
                &lt;/svg&gt;查看原图 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/a&gt;&lt;button class=&quot;inline-flex items-center justify-center rounded-xl px-5 py-3 text-sm font-medium transition-colors&quot; onclick=&quot;closeLightbox()&quot; style=&quot;background: rgba(255,255,255,0.85); color: #0F172A;&quot;&gt;关闭&lt;/button&gt;
            &lt;/div&gt;
            &lt;p class=&quot;mt-3 text-center text-xs&quot; style=&quot;color: #64748B;&quot;&gt;
                本报告仅限个人学习、研究或欣赏使用
            &lt;/p&gt;
            &lt;div class=&quot;mt-4 hidden items-center justify-center gap-4 rounded-xl p-2 text-xs md:flex&quot; style=&quot;background: #F0F9FF; color: #64748B;&quot;&gt;
                &lt;span class=&quot;flex items-center gap-1&quot;&gt;&lt;kbd class=&quot;rounded px-1.5 py-0.5&quot; style=&quot;background: rgba(255,255,255,0.85);&quot;&gt;←&lt;/kbd&gt;&lt;kbd class=&quot;rounded px-1.5 py-0.5&quot; style=&quot;background: rgba(255,255,255,0.85);&quot;&gt;→&lt;/kbd&gt;切换 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;flex items-center gap-1&quot;&gt;&lt;kbd class=&quot;rounded px-1.5 py-0.5&quot; style=&quot;background: rgba(255,255,255,0.85);&quot;&gt;ESC&lt;/kbd&gt;关闭 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;&lt;!-- Simple Image Viewer for Table Images --&gt;
&lt;div class=&quot;fixed inset-0 z-50 hidden items-center justify-center image-viewer-backdrop&quot; id=&quot;imageViewer&quot; onclick=&quot;closeImageViewer()&quot; style=&quot;display:none !important;&quot;&gt;
    &lt;!-- Close Button --&gt;&lt;button class=&quot;absolute right-3 top-3 z-10 rounded-full p-2 shadow-lg transition-all hover:scale-110&quot; onclick=&quot;closeImageViewer()&quot; style=&quot;background: rgba(255,255,255,0.85); color: #0F172A;&quot;&gt;&lt;svg class=&quot;h-5 w-5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewbox=&quot;0 0 24 24&quot;&gt;
        &lt;path d=&quot;M18 6 6 18M6 6l12 12&quot;&gt;&lt;/path&gt;
    &lt;/svg&gt;&lt;/button&gt;&lt;!-- Download Button --&gt;&lt;button class=&quot;absolute right-16 top-3 z-10 rounded-full p-2 shadow-lg transition-all hover:scale-110&quot; id=&quot;imageViewerDownload&quot; onclick=&quot;event.stopPropagation(); downloadImage();&quot; style=&quot;background: rgba(255,255,255,0.85); color: #0F172A;&quot;&gt;&lt;svg class=&quot;h-5 w-5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewbox=&quot;0 0 24 24&quot;&gt;
        &lt;path d=&quot;M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4&quot;&gt;&lt;/path&gt;
        &lt;polyline points=&quot;7 10 12 15 17 10&quot;&gt;&lt;/polyline&gt;
        &lt;line x1=&quot;12&quot; x2=&quot;12&quot; y1=&quot;15&quot; y2=&quot;3&quot;&gt;&lt;/line&gt;
    &lt;/svg&gt;&lt;/button&gt;&lt;!-- Disclaimer Toast --&gt;
    &lt;div class=&quot;absolute top-3 left-1/2 -translate-x-1/2 z-10 px-4 py-2 rounded-full text-xs shadow-lg&quot; onclick=&quot;event.stopPropagation()&quot; style=&quot;background: rgba(0,0,0,0.75); color: #fff;&quot;&gt;
        本报告仅限个人学习、研究或欣赏使用
    &lt;/div&gt;&lt;!-- Image --&gt;&lt;img alt=&quot;&quot; class=&quot;max-h-[90vh] max-w-[90vw] rounded-lg object-contain shadow-2xl&quot; id=&quot;imageViewerImg&quot; onclick=&quot;event.stopPropagation()&quot; src/&gt;
&lt;/div&gt;&lt;!-- Download Toast (outside imageViewer to stay visible) --&gt;
&lt;div class=&quot;download-toast&quot; id=&quot;downloadToast&quot;&gt;
    &lt;svg class=&quot;h-4 w-4&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewbox=&quot;0 0 24 24&quot;&gt;
        &lt;path d=&quot;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&quot;&gt;&lt;/path&gt;
    &lt;/svg&gt;图片仅供个人使用，请勿用于商业用途
&lt;/div&gt;&lt;script&gt;const CARDS_DATA = [];
    
    /* ================================================================
       1. STATE &amp; CONFIG
       ================================================================ */
    let currentItem = null;
    let currentImageIndex = 0;
    let filteredData = [...CARDS_DATA];
    let activeTag = 'all';

    // Theme colors for JS
    const THEME = {
      primary: '#3B82F6',
      primaryLight: '#60A5FA',
      surface: 'rgba(255,255,255,0.85)',
      textPrimary: '#0F172A',
      textMuted: '#64748B',
    };

    // Renderable code block languages
    const RENDERABLE_LANGUAGES = ['mermaid', 'echarts', 'dot', 'graphviz', 'tree', 'ascii-tree'];
    
    // Code copy functionality with header bar
    function initCodeCopy() {
      document.querySelectorAll('.markdown-content pre').forEach(pre =&gt;{
        // Skip if already wrapped
        if (pre.parentElement.classList.contains('code-block-wrapper')) return;
        if (pre.parentElement.classList.contains('renderable-code-container')) return;
        
        const code = pre.querySelector('code');
        let langName = 'CODE';
        let langLower = '';
        if (code &amp;&amp; code.className) {
          const match = code.className.match(/language-(\w+)/);
          if (match) {
            langName = match[1].toUpperCase();
            langLower = match[1].toLowerCase();
          }
        }
        
        // Check if this is a renderable code block
        const isRenderable = RENDERABLE_LANGUAGES.includes(langLower);
        
        // Create wrapper
        const wrapper = document.createElement('div');
        wrapper.className = 'code-block-wrapper';
        
        if (isRenderable) {
          // Create container for side-by-side layout
          const container = document.createElement('div');
          container.className = 'renderable-code-container';
          pre.parentNode.insertBefore(container, pre);
          
          // Add code block wrapper to container
          container.appendChild(wrapper);
          
          // Create preview section
          const previewWrapper = document.createElement('div');
          previewWrapper.className = 'renderable-preview-wrapper';
          
          const previewHeader = document.createElement('div');
          previewHeader.className = 'renderable-preview-header';
          const previewTitle = document.createElement('span');
          previewTitle.className = 'renderable-preview-title';
          previewTitle.innerHTML = `&lt;span&gt;📊&lt;/span&gt; 渲染预览`;
          previewHeader.appendChild(previewTitle);
          
          // Add fullscreen button
          const fullscreenBtn = document.createElement('button');
          fullscreenBtn.className = 'renderable-fullscreen-btn';
          fullscreenBtn.innerHTML = `&lt;span&gt;⛶&lt;/span&gt;&lt;span class=&quot;btn-text&quot;&gt;全屏&lt;/span&gt;`;
          fullscreenBtn.onclick = function() {
            openFullscreenPreview(previewWrapper);
          };
          previewHeader.appendChild(fullscreenBtn);
          previewWrapper.appendChild(previewHeader);
          
          const previewContent = document.createElement('div');
          previewContent.className = 'renderable-preview-content';
          previewWrapper.appendChild(previewContent);
          
          container.appendChild(previewWrapper);
          
          // Store code content and language for later rendering
          previewContent.dataset.lang = langLower;
          previewContent.dataset.code = code ? code.textContent : pre.textContent;
        } else {
          pre.parentNode.insertBefore(wrapper, pre);
        }
        
        // Create header bar
        const header = document.createElement('div');
        header.className = 'code-block-header';
        
        // Window controls (macOS style dots)
        const controls = document.createElement('div');
        controls.className = 'code-window-controls';
        controls.innerHTML = '&lt;span class=&quot;code-window-dot red&quot;&gt;&lt;/span&gt;&lt;span class=&quot;code-window-dot yellow&quot;&gt;&lt;/span&gt;&lt;span class=&quot;code-window-dot green&quot;&gt;&lt;/span&gt;';
        header.appendChild(controls);
        
        const langLabel = document.createElement('span');
        langLabel.className = 'code-lang-label';
        langLabel.textContent = langName;
        header.appendChild(langLabel);
        
        // Actions container (copy button)
        const actions = document.createElement('div');
        actions.className = 'code-header-actions';
        
        // Create copy button
        const btn = document.createElement('button');
        btn.className = 'code-copy-btn';
        btn.innerHTML = '&lt;svg width=&quot;12&quot; height=&quot;12&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;/&gt;&lt;path d=&quot;M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1&quot;/&gt;&lt;/svg&gt;复制';
        btn.onclick = async () =&gt; {
          const codeEl = pre.querySelector('code') || pre;
          const text = codeEl.innerText;
          try {
            await navigator.clipboard.writeText(text);
            btn.classList.add('copied');
            btn.innerHTML = '&lt;svg width=&quot;12&quot; height=&quot;12&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M20 6L9 17l-5-5&quot;/&gt;&lt;/svg&gt;已复制';
            setTimeout(() =&gt; {
              btn.classList.remove('copied');
              btn.innerHTML = '&lt;svg width=&quot;12&quot; height=&quot;12&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;rect x=&quot;9&quot; y=&quot;9&quot; width=&quot;13&quot; height=&quot;13&quot; rx=&quot;2&quot;/&gt;&lt;path d=&quot;M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1&quot;/&gt;&lt;/svg&gt;复制';
            }, 2000);
          } catch (err) {
            console.error('Copy failed:', err);
          }
        };
        actions.appendChild(btn);
        header.appendChild(actions);
        
        // Add header and pre to wrapper
        wrapper.appendChild(header);
        wrapper.appendChild(pre);
      });
    }
    
    // Parse ASCII tree structure to Mermaid flowchart
    function parseAsciiTreeToMermaid(text) {
      const lines = text.split('\n').filter(line =&gt; line.trim());
      if (lines.length === 0) return 'flowchart LR\n  A[Empty]';
      
      const nodes = [];
      const edges = [];
      let nodeId = 0;
      const nodeMap = new Map(); // text -&gt; id
      const stack = []; // {id, indent}
      
      // Helper to create safe node id
      function getNodeId(text) {
        const cleanText = text.trim();
        if (nodeMap.has(cleanText)) {
          return nodeMap.get(cleanText);
        }
        const id = `N${nodeId++}`;
        nodeMap.set(cleanText, id);
        return id;
      }
      
      // Helper to escape text for Mermaid
      function escapeText(text) {
        return text
          .replace(/&quot;/g, &quot;'&quot;)
          .replace(/\[/g, '[')
          .replace(/\]/g, ']')
          .replace(/\(/g, '(')
          .replace(/\)/g, ')')
          .replace(/{/g, '{')
          .replace(/}/g, '}');
      }
      
      // Helper to determine node shape based on content
      function getNodeShape(text) {
        const t = text.trim();
        if (t.startsWith('⚡') || t.includes('汇合') || t.includes('交汇')) {
          return ['{{', '}}'];  // Diamond for special nodes
        } else if (t.startsWith('[') &amp;&amp; t.includes(']')) {
          return ['[/', '/]'];  // Parallelogram for choices
        } else if (t.startsWith('+') || t.startsWith('-')) {
          return ['([', '])'];  // Stadium for options
        } else if (t.includes('：') || t.includes(':')) {
          return ['[', ']'];  // Rectangle for sections
        }
        return ['[', ']'];
      }
      
      // Calculate indent level (count leading spaces and tree chars)
      function getIndent(line) {
        let indent = 0;
        // All box drawing and tree-related characters
        const treeChars = ' │├└─┬┴┼┤┌┐┘┏┓┗┛╔╗╚╝═║|+-`\t';
        for (let i = 0; i &lt; line.length; i++) {
          const ch = line[i];
          if (treeChars.includes(ch)) {
            indent++;
          } else {
            break;
          }
        }
        return Math.floor(indent / 2); // Normalize indent
      }
      
      // Extract text content from line
      function extractText(line) {
        return line
          .replace(/^[\s│├└─┬┴┼]+/, '')
          .replace(/^[\-\+\*]\s*/, '')
          .trim();
      }
      
      for (const line of lines) {
        if (!line.trim()) continue;
        
        const indent = getIndent(line);
        const text = extractText(line);
        
        if (!text) continue;
        
        const id = getNodeId(text);
        const [shapeStart, shapeEnd] = getNodeShape(text);
        const escapedText = escapeText(text);
        
        nodes.push(`  ${id}${shapeStart}&quot;${escapedText}&quot;${shapeEnd}`);
        
        // Find parent (last node with smaller indent)
        while (stack.length &gt; 0 &amp;&amp; stack[stack.length - 1].indent &gt;= indent) {
          stack.pop();
        }
        
        if (stack.length &gt; 0) {
          const parent = stack[stack.length - 1];
          edges.push(`  ${parent.id} --&gt; ${id}`);
        }
        
        stack.push({ id, indent });
      }
      
      // Build Mermaid code - use LR (left to right) for horizontal tree layout
      let mermaidCode = 'flowchart LR\n';
      mermaidCode += nodes.join('\n') + '\n';
      mermaidCode += edges.join('\n');
      
      return mermaidCode;
    }
    
    // Open fullscreen preview
    function openFullscreenPreview(previewWrapper) {
      const content = previewWrapper.querySelector('.renderable-preview-content');
      if (!content) return;
      
      // Create overlay
      const overlay = document.createElement('div');
      overlay.className = 'renderable-fullscreen-overlay';
      
      // Create header
      const header = document.createElement('div');
      header.className = 'renderable-fullscreen-header';
      
      const title = document.createElement('span');
      title.className = 'renderable-fullscreen-title';
      title.textContent = '📊 渲染预览 - 全屏模式';
      header.appendChild(title);
      
      const closeBtn = document.createElement('button');
      closeBtn.className = 'renderable-fullscreen-close';
      closeBtn.innerHTML = '✕ 关闭';
      closeBtn.onclick = function() {
        document.body.removeChild(overlay);
        document.body.style.overflow = '';
      };
      header.appendChild(closeBtn);
      
      overlay.appendChild(header);
      
      // Create content area with cloned content
      const fullContent = document.createElement('div');
      fullContent.className = 'renderable-fullscreen-content';
      fullContent.innerHTML = content.innerHTML;
      overlay.appendChild(fullContent);
      
      // Add to body
      document.body.appendChild(overlay);
      document.body.style.overflow = 'hidden';
      
      // Close on escape key
      const handleEscape = function(e) {
        if (e.key === 'Escape') {
          document.body.removeChild(overlay);
          document.body.style.overflow = '';
          document.removeEventListener('keydown', handleEscape);
        }
      };
      document.addEventListener('keydown', handleEscape);
      
      // Close on overlay background click
      overlay.onclick = function(e) {
        if (e.target === overlay) {
          document.body.removeChild(overlay);
          document.body.style.overflow = '';
        }
      };
    }
    
    // Render all renderable code blocks
    function initRenderableCodeBlocks() {
      // Initialize Mermaid
      if (typeof mermaid !== 'undefined') {
        mermaid.initialize({
          startOnLoad: false,
          theme: 'default',
          securityLevel: 'loose',
          flowchart: { useMaxWidth: true, htmlLabels: true },
          sequence: { useMaxWidth: true },
          gantt: { useMaxWidth: true },
          er: { useMaxWidth: true },
          pie: { useMaxWidth: true },
          class: { useMaxWidth: true },
          state: { useMaxWidth: true },
          journey: { useMaxWidth: true },
          gitGraph: { useMaxWidth: true }
        });
      }
      
      // Helper to unescape HTML entities
      function unescapeHtml(text) {
        const doc = new DOMParser().parseFromString(text, 'text/html');
        return doc.documentElement.textContent;
      }
      
      // Render each preview
      document.querySelectorAll('.renderable-preview-content').forEach(async (preview, index) =&gt; {
        const lang = preview.dataset.lang;
        let code = preview.dataset.code;
        
        if (!lang || !code) return;
        
        // Unescape HTML entities (e.g., &gt; -&gt; &gt;)
        code = unescapeHtml(code);
        
        try {
          if (lang === 'mermaid' &amp;&amp; typeof mermaid !== 'undefined') {
            // Render Mermaid diagram
            const id = `mermaid-diagram-${index}`;
            
            // Clean up code for specific diagram types
            let cleanCode = code;
            // Remove classDef/class from non-flowchart diagrams (ERD, sequence, etc.)
            if (code.match(/^\s*(erDiagram|sequenceDiagram|classDiagram|stateDiagram|pie|journey|gantt|gitGraph)/m)) {
              cleanCode = code.split('\n')
                .filter(line =&gt; !line.trim().startsWith('classDef ') &amp;&amp; !line.trim().startsWith('class '))
                .join('\n');
            }
            
            try {
              const { svg } = await mermaid.render(id, cleanCode);
              preview.innerHTML = svg;
            } catch (mermaidErr) {
              console.error('Mermaid render error:', mermaidErr);
              preview.innerHTML = `&lt;div style=&quot;color: #ef4444; padding: 1rem; white-space: pre-wrap;&quot;&gt;Mermaid 渲染错误: ${mermaidErr.message || mermaidErr}&lt;/div&gt;`;
            }
          } else if ((lang === 'dot' || lang === 'graphviz') &amp;&amp; typeof Viz !== 'undefined') {
            // Render Graphviz DOT diagram (v3.x standalone API)
            try {
              const viz = await Viz.instance();
              const svg = viz.renderSVGElement(code);
              preview.innerHTML = '';
              preview.appendChild(svg);
            } catch (e) {
              preview.innerHTML = `&lt;div style=&quot;color: #ef4444; padding: 1rem;&quot;&gt;Graphviz 渲染错误: ${e.message}&lt;/div&gt;`;
            }
          } else if ((lang === 'tree' || lang === 'ascii-tree') &amp;&amp; typeof mermaid !== 'undefined') {
            // Parse ASCII tree and convert to Mermaid flowchart
            try {
              const mermaidCode = parseAsciiTreeToMermaid(code);
              const id = `tree-diagram-${index}`;
              const { svg } = await mermaid.render(id, mermaidCode);
              preview.innerHTML = svg;
            } catch (e) {
              preview.innerHTML = `&lt;div style=&quot;color: #ef4444; padding: 1rem;&quot;&gt;树形结构解析错误: ${e.message}&lt;/div&gt;`;
            }
          } else if (lang === 'echarts' &amp;&amp; typeof echarts !== 'undefined') {
            // Render ECharts
            preview.style.width = '100%';
            preview.style.minHeight = '300px';
            const chart = echarts.init(preview);
            try {
              const option = new Function('return ' + code)();
              chart.setOption(option);
              // Resize on window resize
              window.addEventListener('resize', () =&gt; chart.resize());
            } catch (e) {
              preview.innerHTML = `&lt;div style=&quot;color: #ef4444; padding: 1rem;&quot;&gt;ECharts 配置解析错误: ${e.message}&lt;/div&gt;`;
            }
          } else {
            preview.innerHTML = `&lt;div style=&quot;color: #888; padding: 1rem;&quot;&gt;不支持的渲染类型: ${lang}&lt;/div&gt;`;
          }
        } catch (err) {
          preview.innerHTML = `&lt;div style=&quot;color: #ef4444; padding: 1rem;&quot;&gt;渲染错误: ${err.message}&lt;/div&gt;`;
        }
      });
    }

    // Get unique tags with counts
    function getTags() {
      const tags = new Map();
      CARDS_DATA.forEach(item =&gt; {
        if (item.tags) {
          item.tags.forEach(tag =&gt; {
            tags.set(tag, (tags.get(tag) || 0) + 1);
          });
        }
      });
      return Array.from(tags.entries()).sort((a, b) =&gt; b[1] - a[1]);
    }

    // Tag colors
    const tagColors = [
      { bg: '#3B82F620', text: '#3B82F6', ring: '#3B82F640' },
      { bg: '#06B6D420', text: '#06B6D4', ring: '#06B6D440' },
      { bg: '#8B5CF620', text: '#8B5CF6', ring: '#8B5CF640' },
      { bg: '#EC489920', text: '#EC4899', ring: '#EC489940' },
      { bg: '#10B98120', text: '#10B981', ring: '#10B98140' },
    ];

    function getTagStyle(tag) {
      let hash = 0;
      for (let i = 0; i &lt; tag.length; i++) {
        hash = tag.charCodeAt(i) + ((hash &lt;&lt; 5) - hash);
      }
      const color = tagColors[Math.abs(hash) % tagColors.length];
      return `background: ${color.bg}; color: ${color.text}; border: 1px solid ${color.ring};`;
    }

    // Render tag filters
    let showAllTags = false;
    
    function renderFilters() {
      const container = document.getElementById('tagFilters');
      const tags = getTags();
      
      if (tags.length === 0) {
        container.innerHTML = '';
        return;
      }
      
      let html = '&lt;span class=&quot;text-sm mr-2&quot; style=&quot;color: ' + THEME.textMuted + ';&quot;&gt;标签筛选:&lt;/span&gt;';
      html += '&lt;button onclick=&quot;filterByTag(\'all\')&quot; class=&quot;px-3 py-1.5 rounded-full text-sm transition-all&quot; style=&quot;' + 
        (activeTag === 'all' ? 'background: ' + THEME.primary + '; color: white;' : 'background: ' + THEME.surface + '; color: ' + THEME.textPrimary + ';') + '&quot;&gt;全部&lt;/button&gt;';
      
      const displayTags = showAllTags ? tags : tags.slice(0, 12);
      displayTags.forEach(([tag, count]) =&gt; {
        html += '&lt;button onclick=&quot;filterByTag(\'' + tag.replace(/'/g, &quot;\\'&quot;) + '\')&quot; class=&quot;px-3 py-1.5 rounded-full text-sm transition-all&quot; style=&quot;' + 
          (activeTag === tag ? 'background: ' + THEME.primary + '; color: white;' : 'background: ' + THEME.surface + '; color: ' + THEME.textPrimary + ';') + '&quot;&gt;' + tag + ' &lt;span class=&quot;text-xs opacity-70&quot;&gt;(' + count + ')&lt;/span&gt;&lt;/button&gt;';
      });
      
      if (tags.length &gt; 12) {
        if (showAllTags) {
          html += '&lt;button onclick=&quot;toggleAllTags()&quot; class=&quot;px-3 py-1.5 rounded-full text-sm transition-all&quot; style=&quot;background: ' + THEME.surface + '; color: ' + THEME.primary + '; border: 1px solid ' + THEME.primary + ';&quot;&gt;收起&lt;/button&gt;';
        } else {
          html += '&lt;button onclick=&quot;toggleAllTags()&quot; class=&quot;px-3 py-1.5 rounded-full text-sm transition-all&quot; style=&quot;background: ' + THEME.surface + '; color: ' + THEME.primary + '; border: 1px solid ' + THEME.primary + ';&quot;&gt;+' + (tags.length - 12) + ' 更多&lt;/button&gt;';
        }
      }
      
      container.innerHTML = html;
    }
    
    function toggleAllTags() {
      showAllTags = !showAllTags;
      renderFilters();
    }

    // Filter by tag
    function filterByTag(tag) {
      activeTag = tag;
      applyFilters();
      renderFilters();
    }

    // Apply all filters
    function applyFilters() {
      const searchTerm = document.getElementById('searchInput').value.toLowerCase();
      
      filteredData = CARDS_DATA.filter(item =&gt; {
        const matchesTag = activeTag === 'all' || (item.tags &amp;&amp; item.tags.includes(activeTag));
        const matchesSearch = !searchTerm || 
          item.name.toLowerCase().includes(searchTerm) ||
          (item.tags &amp;&amp; item.tags.some(t =&gt; t.toLowerCase().includes(searchTerm)));
        
        return matchesTag &amp;&amp; matchesSearch;
      });
      
      renderGallery();
    }

    // Render gallery
    function renderGallery() {
      const gallery = document.getElementById('gallery');
      const emptyState = document.getElementById('emptyState');
      const itemCount = document.getElementById('itemCount');
      
      itemCount.textContent = filteredData.length;
      
      if (filteredData.length === 0) {
        gallery.innerHTML = '';
        emptyState.classList.remove('hidden');
        emptyState.classList.add('flex');
        return;
      }
      
      emptyState.classList.add('hidden');
      emptyState.classList.remove('flex');
      
      gallery.innerHTML = filteredData.map((item, index) =&gt; `&lt;div class=&quot;group cursor-pointer card-hover rounded-2xl shadow-sm overflow-hidden&quot;
             style=&quot;background: ${THEME.surface}; border: 1px solid rgba(0,0,0,0.1);&quot;
             onclick=&quot;openLightbox(${index})&quot;&gt;&lt;div class=&quot;aspect-square overflow-hidden&quot; style=&quot;background: linear-gradient(135deg, rgba(0,0,0,0.02), rgba(0,0,0,0.05));&quot;&gt;&lt;img src=&quot;${item.images[0]?.url || ''}&quot; alt=&quot;${item.name}&quot;
                 class=&quot;h-full w-full object-cover transition-transform duration-500 group-hover:scale-110&quot;
                 loading=&quot;lazy&quot;
                 onerror=&quot;this.src='data:image/svg+xml,&lt;svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22&gt;&lt;rect fill=%22%23f0f0f0%22 width=%22100%22 height=%22100%22/&gt;&lt;text x=%2250%22 y=%2255%22 text-anchor=%22middle%22 fill=%22%23999%22 font-size=%2240%22&gt;🖼&lt;/text&gt;&lt;/svg&gt;'&quot;&gt;&lt;/div&gt;&lt;div class=&quot;p-3&quot;&gt;&lt;h3 class=&quot;font-semibold truncate text-sm&quot; style=&quot;color: ${THEME.textPrimary};&quot;&gt;${item.name}&lt;/h3&gt;${item.subtitle ? '&lt;p class=&quot;text-xs italic truncate&quot; style=&quot;color: ' + THEME.textMuted + ';&quot;&gt;' + item.subtitle + '&lt;/p&gt;' : ''}
            ${item.tags &amp;&amp; item.tags.length &gt; 0 ? '&lt;div class=&quot;mt-2 flex flex-wrap gap-1&quot;&gt;' + item.tags.slice(0, 2).map(tag =&gt; '&lt;span class=&quot;inline-block rounded-full px-2 py-0.5 text-[10px]&quot; style=&quot;' + getTagStyle(tag) + '&quot;&gt;' + tag + '&lt;/span&gt;').join('') + '&lt;/div&gt;' : ''}
            ${item.links &amp;&amp; item.links.length &gt; 0 ? '&lt;div class=&quot;mt-2 flex flex-wrap gap-1&quot;&gt;' + item.links.slice(0, 3).map(link =&gt; '&lt;a href=&quot;' + link.url + '&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; onclick=&quot;event.stopPropagation()&quot; class=&quot;inline-flex items-center rounded-full px-2 py-0.5 text-[10px] transition-all hover:opacity-80&quot; style=&quot;background: ' + THEME.surface + '; color: ' + THEME.textMuted + '; border: 1px solid rgba(0,0,0,0.1);&quot;&gt;[' + link.text + ']&lt;/a&gt;').join('') + (item.links.length &gt; 3 ? '&lt;span class=&quot;rounded-full px-2 py-0.5 text-[10px]&quot; style=&quot;background: ' + THEME.surface + '; color: ' + THEME.textMuted + ';&quot;&gt;+' + (item.links.length - 3) + '&lt;/span&gt;' : '') + '&lt;/div&gt;' : ''}&lt;/div&gt;&lt;/div&gt;`).join('');
    }

    // Lightbox functions
    function openLightbox(index) {
      currentItem = filteredData[index];
      currentImageIndex = 0;
      updateLightbox();
      const lightbox = document.getElementById('lightbox');
      lightbox.style.display = '';
      lightbox.classList.remove('hidden');
      lightbox.classList.add('flex');
      document.body.style.overflow = 'hidden';
    }

    function closeLightbox() {
      document.getElementById('lightbox').classList.add('hidden');
      document.getElementById('lightbox').classList.remove('flex');
      document.body.style.overflow = '';
    }

    function updateLightbox() {
      if (!currentItem) return;
      
      const img = currentItem.images[currentImageIndex];
      document.getElementById('lightboxImage').src = img?.url || '';
      document.getElementById('lightboxTitle').textContent = currentItem.name;
      document.getElementById('lightboxSubtitle').textContent = currentItem.subtitle || '';
      document.getElementById('lightboxLink').href = img?.url || '#';
      document.getElementById('imageCounter').textContent = `${currentImageIndex + 1} / ${currentItem.images.length}`;
      
      // Tags
      const tagsContainer = document.getElementById('lightboxTags');
      if (currentItem.tags &amp;&amp; currentItem.tags.length &gt; 0) {
        tagsContainer.innerHTML = currentItem.tags.map(tag =&gt; 
          '&lt;span class=&quot;inline-block rounded-full px-3 py-1 text-xs&quot; style=&quot;' + getTagStyle(tag) + '&quot;&gt;' + tag + '&lt;/span&gt;'
        ).join('');
        tagsContainer.classList.remove('hidden');
      } else {
        tagsContainer.classList.add('hidden');
      }
      
      // Key info
      const keyInfoContainer = document.getElementById('lightboxKeyInfo');
      if (currentItem.keyFields &amp;&amp; currentItem.keyFields.length &gt; 0) {
        keyInfoContainer.innerHTML = currentItem.keyFields.map(field =&gt;  `&lt;div class=&quot;rounded-lg p-3&quot; style=&quot;background: rgba(0,0,0,0.03);&quot;&gt;&lt;span class=&quot;text-xs font-medium&quot; style=&quot;color: ${THEME.textMuted};&quot;&gt;${field.label}&lt;/span&gt;&lt;p class=&quot;mt-1 text-sm font-medium&quot; style=&quot;color: ${THEME.textPrimary};&quot;&gt;${field.value}&lt;/p&gt;&lt;/div&gt;`
        ).join('');
        keyInfoContainer.classList.remove('hidden');
      } else {
        keyInfoContainer.classList.add('hidden');
      }
      
      // Other info
      const otherInfoContainer = document.getElementById('lightboxOtherInfo');
      if (currentItem.otherFields &amp;&amp; currentItem.otherFields.length &gt; 0) {
        otherInfoContainer.innerHTML = currentItem.otherFields.map(field =&gt;  `&lt;div class=&quot;text-sm&quot;&gt;&lt;span class=&quot;font-medium&quot; style=&quot;color: ${THEME.textMuted};&quot;&gt;${field.label}:&lt;/span&gt;            &lt;span style=&quot;color: ${THEME.textPrimary};&quot;&gt;${field.value}&lt;/span&gt;&lt;/div&gt;`
        ).join('');
        otherInfoContainer.classList.remove('hidden');
      } else {
        otherInfoContainer.classList.add('hidden');
      }
      
      // Thumbnails - 水平预览条
      const thumbnailsContainer = document.getElementById('thumbnails');
      thumbnailsContainer.innerHTML = currentItem.images.map((img, idx) =&gt;`&lt;img src=&quot;${img.url}&quot; alt=&quot;${img.alt || ''}&quot;
              style=&quot;width: 48px; height: 48px; flex-shrink: 0; cursor: pointer; border-radius: 8px; object-fit: cover; transition: all 0.2s; ${idx === currentImageIndex ? 'border: 2px solid ' + THEME.primary + '; opacity: 1;' : 'border: 2px solid transparent; opacity: 0.5;'}&quot;
              onclick=&quot;currentImageIndex = ${idx}; updateLightbox();&quot;&gt;`
      ).join('');
      
      // Links (普通链接)
      const linksSection = document.getElementById('lightboxLinksSection');
      const linksContainer = document.getElementById('lightboxLinks');
      if (currentItem.links &amp;&amp; currentItem.links.length &gt; 0) {
        linksContainer.innerHTML = currentItem.links.map(link =&gt;  `&lt;a href=&quot;${link.url}&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; 
              class=&quot;inline-flex items-center rounded-full px-3 py-1 text-xs transition-all hover:opacity-80&quot;
              style=&quot;background: ${THEME.surface}; color: ${THEME.primary}; border: 1px solid ${THEME.primary}40;&quot;&gt;${link.text}&lt;svg class=&quot;ml-1 h-3 w-3&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&quot;/&gt;&lt;polyline points=&quot;15 3 21 3 21 9&quot;/&gt;&lt;line x1=&quot;10&quot; y1=&quot;14&quot; x2=&quot;21&quot; y2=&quot;3&quot;/&gt;&lt;/svg&gt;&lt;/a&gt;`
        ).join('');
        linksSection.classList.remove('hidden');
      } else {
        linksSection.classList.add('hidden');
      }
      
      // References (参考文献引用)
      const refsSection = document.getElementById('lightboxRefsSection');
      const refsContainer = document.getElementById('lightboxRefs');
      if (currentItem.references &amp;&amp; currentItem.references.length &gt; 0) {
        refsContainer.innerHTML = currentItem.references.map(ref =&gt;  `&lt;a href=&quot;${ref.url}&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; 
              class=&quot;inline-flex items-center rounded-full px-2 py-0.5 text-xs transition-all hover:opacity-80&quot;
              style=&quot;background: ${THEME.textMuted}20; color: ${THEME.textMuted};&quot;&gt;[${ref.text}]&lt;svg class=&quot;ml-1 h-2.5 w-2.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&quot;/&gt;&lt;polyline points=&quot;15 3 21 3 21 9&quot;/&gt;&lt;line x1=&quot;10&quot; y1=&quot;14&quot; x2=&quot;21&quot; y2=&quot;3&quot;/&gt;&lt;/svg&gt;&lt;/a&gt;`
        ).join('');
        refsSection.classList.remove('hidden');
      } else {
        refsSection.classList.add('hidden');
      }
      
      // Nav buttons
      document.getElementById('prevBtn').style.display = currentItem.images.length &gt; 1 ? '' : 'none';
      document.getElementById('nextBtn').style.display = currentItem.images.length &gt; 1 ? '' : 'none';
    }

    function prevImage() {
      if (!currentItem) return;
      currentImageIndex = (currentImageIndex - 1 + currentItem.images.length) % currentItem.images.length;
      updateLightbox();
    }

    function nextImage() {
      if (!currentItem) return;
      currentImageIndex = (currentImageIndex + 1) % currentItem.images.length;
      updateLightbox();
    }

    // Keyboard navigation
    document.addEventListener('keydown', function(e) {
      if (document.getElementById('lightbox').classList.contains('hidden')) return;
      if (e.key === 'Escape') closeLightbox();
      if (e.key === 'ArrowLeft') prevImage();
      if (e.key === 'ArrowRight') nextImage();
    });

    // Click outside to close
    document.getElementById('lightbox').addEventListener('click', function(e) {
      if (e.target === this) closeLightbox();
    });
    
    // Make multiple images in table cells horizontal and add click to view
    function initTableImages() {
      document.querySelectorAll('.markdown-content td').forEach(td =&gt; {
        const images = td.querySelectorAll('img');
        if (images.length &gt; 0) {
          td.classList.add('has-images');
          // Remove br tags between images
          td.querySelectorAll('br').forEach(br =&gt; br.remove());
          // Add click handler to each image
          images.forEach(img =&gt; {
            img.style.cursor = 'pointer';
            img.addEventListener('click', function(e) {
              e.preventDefault();
              e.stopPropagation();
              openImageViewer(this.src);
            });
          });
        }
      });
    }
    
    // Current image URL for download
    let currentImageUrl = '';
    
    // Simple image viewer for table images
    function openImageViewer(src) {
      const viewer = document.getElementById('imageViewer');
      const img = document.getElementById('imageViewerImg');
      
      img.src = src;
      currentImageUrl = src;
      
      viewer.style.display = '';
      viewer.classList.remove('hidden');
      viewer.classList.add('flex');
      document.body.style.overflow = 'hidden';
    }
    
    function closeImageViewer() {
      const viewer = document.getElementById('imageViewer');
      viewer.classList.add('hidden');
      viewer.classList.remove('flex');
      document.body.style.overflow = '';
    }
    
    // Show download toast
    function showDownloadToast() {
      const toast = document.getElementById('downloadToast');
      if (toast) {
        toast.classList.add('show');
        setTimeout(() =&gt; {
          toast.classList.remove('show');
        }, 3000);
      }
    }
    
    // Download current image and show toast
    function downloadImage() {
      console.log('[downloadImage] called, currentImageUrl:', currentImageUrl);
      showDownloadToast();
      if (currentImageUrl) {
        // Open image in new tab (download may not work for cross-origin images)
        window.open(currentImageUrl, '_blank');
      }
    }
    
    // ESC key to close image viewer
    document.addEventListener('keydown', function(e) {
      if (e.key === 'Escape') {
        const viewer = document.getElementById('imageViewer');
        if (viewer &amp;&amp; !viewer.classList.contains('hidden')) {
          closeImageViewer();
        }
      }
    });
    
    // Make all figure images clickable
    function initFigureImages() {
      document.querySelectorAll('.markdown-content figure img, .markdown-content .image-grid img').forEach(img =&gt; {
        img.style.cursor = 'pointer';
        img.addEventListener('click', function(e) {
          e.preventDefault();
          e.stopPropagation();
          openImageViewer(this.src);
        });
      });
    }

    // Toggle ticket expand/collapse
    function toggleTickets(btn) {
      const group = btn.closest('.ticket-spot-group');
      if (group) {
        group.classList.toggle('expanded');
      }
    }

    // Device detection for attraction, hotel and ticket links
    function initDeviceLinks() {
      const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
      
      // Handle general device links (attraction, hotel, ticket)
      document.querySelectorAll('.attraction-link, .hotel-link, .ticket-buy, .device-link').forEach(link =&gt; {
        const pcUrl = link.dataset.pc;
        const mobileUrl = link.dataset.mobile;
        if (isMobile &amp;&amp; mobileUrl) {
          link.href = mobileUrl;
        } else if (!isMobile &amp;&amp; pcUrl) {
          link.href = pcUrl;
        }
        // Fallback: use whatever is available
        if (!link.href || link.href === window.location.href || link.href === '#') {
          link.href = mobileUrl || pcUrl || '#';
        }
        // Hide link if no valid URL
        if (!link.href || link.href === '#' || link.href === window.location.href) {
          link.style.display = 'none';
        }
      });
      
      // Handle navigation links (different URLs for PC vs Mobile)
      document.querySelectorAll('.nav-link').forEach(link =&gt; {
        const currentHref = link.getAttribute('href');
        const lon = link.dataset.lon;
        const lat = link.dataset.lat;
        const name = link.dataset.name || '目的地';
        
        if (lon &amp;&amp; lat) {
          if (isMobile) {
            // Mobile: use navigation link with route planning + app launch
            const mobileUrl = `https://uri.amap.com/navigation?to=${lon},${lat},${encodeURIComponent(name)}&amp;src=qwen_task&amp;callnative=1`;
            link.href = mobileUrl;
          } else {
            // PC: use marker link (no auto-locate origin support)
            const pcUrl = `https://uri.amap.com/marker?position=${lon},${lat}&amp;name=${encodeURIComponent(name)}&amp;coordinate=gaode`;
            link.href = pcUrl;
          }
        }
      });
      
      // Handle mobile-only elements (spot-taxi: show on mobile, hide on PC)
      document.querySelectorAll('.spot-taxi').forEach(el =&gt; {
        if (!isMobile) {
          el.style.display = 'none';
        } else {
          el.style.display = 'inline-block';
        }
      });
    }

    // ================================================================
    // SMART INITIALIZATION - 按需加载和延迟执行
    // ================================================================
    
    // 检测页面需要哪些库
    function detectRequiredLibs() {
      const required = { mermaid: false, echarts: false, viz: false, katex: false };
      
      // 检测所有代码块（包括有无 data-renderable 属性的）
      document.querySelectorAll('code[class*=&quot;language-&quot;]').forEach(code =&gt; {
        const langMatch = code.className.match(/language-(\w+)/);
        if (!langMatch) return;
        const lang = langMatch[1].toLowerCase();
        
        if (['mermaid', 'tree', 'ascii-tree'].includes(lang)) {
          required.mermaid = true;
        }
        if (['dot', 'graphviz'].includes(lang)) {
          required.viz = true;
        }
        if (lang === 'echarts') {
          required.echarts = true;
        }
      });
      
      // 检测内联脚本中是否使用了 ECharts
      document.querySelectorAll('script:not([src])').forEach(script =&gt; {
        if (script.textContent &amp;&amp; script.textContent.includes('echarts')) {
          required.echarts = true;
        }
      });
      
      // 检测 KaTeX - 只检测页面可见文本中的数学公式
      // 排除 script 和 style 标签的内容
      const tempDiv = document.createElement('div');
      tempDiv.innerHTML = document.body.innerHTML;
      tempDiv.querySelectorAll('script, style, noscript').forEach(el =&gt; el.remove());
      const bodyText = tempDiv.textContent || '';
      
      // 检测块级公式
      const displayMathMatch = bodyText.match(/\$\$([^\$]+)\$\$/);
      const hasDisplayMath = displayMathMatch &amp;&amp; displayMathMatch[1].trim().length &gt; 0;
      // 检测 LaTeX 分隔符
      const hasLatexDelimiters = /\\[[\s\S]+?\\]|\\([\s\S]+?\\)/.test(bodyText);
      
      if (hasDisplayMath || hasLatexDelimiters) {
        required.katex = true;
      }
      
      return required;
    }
    
    // 按需加载库
    async function loadRequiredLibs(required) {
      const promises = [];
      
      if (required.katex) {
        loadStyle(window.LAZY_LIBS.katexCss);
        promises.push(new Promise(resolve =&gt; {
          loadScript(window.LAZY_LIBS.katex, () =&gt; {
            loadScript(window.LAZY_LIBS.katexAuto, () =&gt; {
              renderMathInElement(document.body, {
                delimiters: [
                  {left: '$$', right: '$$', display: true},
                  {left: '$', right: '$', display: false},
                  {left: '\\[', right: '\\]', display: true},
                  {left: '\\(', right: '\\)', display: false}
                ],
                throwOnError: false,
                ignoredTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code', 'table', 'td', 'th', 'tr', 'thead', 'tbody']
              });
              resolve();
            });
          });
        }));
      }
      
      if (required.mermaid) {
        promises.push(new Promise(resolve =&gt; loadScript(window.LAZY_LIBS.mermaid, resolve)));
      }
      
      if (required.viz) {
        // Viz.js v3 standalone 单文件版本
        promises.push(new Promise(resolve =&gt; loadScript(window.LAZY_LIBS.viz, resolve)));
      }
      
      if (required.echarts) {
        promises.push(new Promise(resolve =&gt; loadScript(window.LAZY_LIBS.echarts, resolve)));
      }
      
      return Promise.all(promises);
    }
    
    // 使用 requestIdleCallback 延迟执行非关键任务
    function scheduleIdleTask(task) {
      if ('requestIdleCallback' in window) {
        requestIdleCallback(task, { timeout: 2000 });
      } else {
        setTimeout(task, 100);
      }
    }

    // Initialize
    document.addEventListener('DOMContentLoaded', async function() {
      // 0. 标记页面加载完成，触发淡入动画（防止FOUC）
      requestAnimationFrame(() =&gt; {
        document.body.classList.add('loaded');
      });
      
      // 1. 关键任务 - 立即执行
      initCodeCopy();
      initFigureImages();
      initDeviceLinks();
      
      // 2. 检测并按需加载库
      const required = detectRequiredLibs();
      
      // 加载所有需要的库（包括 KaTeX）
      if (required.mermaid || required.viz || required.echarts || required.katex) {
        await loadRequiredLibs(required);
        // 库加载完成后渲染图表
        if (required.mermaid || required.viz || required.echarts) {
          initRenderableCodeBlocks();
        }
      }
      
      // 3. 非关键任务 - 延迟执行
      scheduleIdleTask(() =&gt; {
        initTableImages();
        
        // 卡片画廊
        if (CARDS_DATA.length &gt; 0) {
          renderFilters();
          renderGallery();
          document.getElementById('searchInput')?.addEventListener('input', applyFilters);
        }
      });
    });&lt;/script&gt;&lt;!--!doctype--&gt;</description><pubDate>Wed, 15 Apr 2026 17:29:30 +0800</pubDate></item><item><title>临时保存</title><link>https://www.bh6pei.cn/?id=15</link><description>&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;你说得完全没错！✅ 宝塔面板下 TP5 框架已安装完成、首页能正常显示欢迎词，说明基础环境 100% 就绪，不用再纠结安装相关的问题，现在可以直接启动第二步：开发你专属的日报生成 + 打印项目，我把核心步骤拆成「极简可落地」的 4 步，全程适配你的宝塔环境，每一步都能直接操作：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;核心目标：把 “固定格式日报生成 + 打印” 功能落地到 TP5 项目中&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;第一步：创建日报功能的核心控制器（DailyReport.php）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;控制器是功能的 “大脑”，负责处理 “新增日报、查看列表、打印日报” 的逻辑：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;登录宝塔面板 → 「文件」→ 找到路径：/www/wwwroot/dgcms/application/index/controller；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;右键controller文件夹 → 「新建文件」，文件名填DailyReport.php（首字母 D 必须大写）；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;打开文件，粘贴以下代码（已适配你的dgcms数据表）：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;php&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;运行&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;lt;?phpnamespace app\index\controller;use think\Controller;use app\index\model\DailyReport as ReportModel;class DailyReport extends Controller{&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; // 日报列表页（查看所有生成的日报）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; public function index()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $list = ReportModel::order(&amp;#39;report_date desc, create_time desc&amp;#39;)-&amp;gt;select();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;assign(&amp;#39;list&amp;#39;, $list);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return $this-&amp;gt;fetch();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; // 新增日报（生成固定格式内容）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; public function add()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (request()-&amp;gt;isPost()) {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 获取表单提交的数据&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $data = input(&amp;#39;post.&amp;#39;);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 极简验证：核心字段不能为空&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (empty($data[&amp;#39;user_name&amp;#39;]) || empty($data[&amp;#39;dept&amp;#39;]) || empty($data[&amp;#39;report_date&amp;#39;]) || empty($data[&amp;#39;today_work&amp;#39;])) {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;error(&amp;#39;填写人、部门、日期、今日完成不能为空！&amp;#39;);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 保存数据到dgcms表&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $report = new ReportModel();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $result = $report-&amp;gt;allowField(true)-&amp;gt;save($data);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ($result) {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;success(&amp;#39;日报生成成功！&amp;#39;, url(&amp;#39;index&amp;#39;));&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;error(&amp;#39;日报生成失败，请重试！&amp;#39;);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 默认填充今日日期&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;assign(&amp;#39;today&amp;#39;, date(&amp;#39;Y-m-d&amp;#39;));&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return $this-&amp;gt;fetch();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; // 打印专用页面（固定格式，适配打印）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; public function print($id)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $report = ReportModel::find($id);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!$report) {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;error(&amp;#39;日报不存在！&amp;#39;);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $this-&amp;gt;assign(&amp;#39;report&amp;#39;, $report);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return $this-&amp;gt;fetch();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; }}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;点击「保存」，控制器就创建好了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;第二步：创建日报数据模型（DailyReport.php）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;模型负责和数据库（dgcms 表）交互，处理数据的读写：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;宝塔「文件」→ 路径：/www/wwwroot/dgcms/application/index/model（没有model文件夹就右键新建）；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;右键model文件夹 → 「新建文件」，文件名DailyReport.php（首字母 D 大写）；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;粘贴以下代码（关联你的dgcms数据表）：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;php&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;运行&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;lt;?phpnamespace app\index\model;use think\Model;class DailyReport extends Model{&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; // 关联你创建的dgcms数据表（核心适配）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; protected $table = &amp;#39;dgcms&amp;#39;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; // 关闭自动更新时间，只保留创建时间&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; protected $updateTime = false;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; // 自动填充创建时间&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; protected $auto = [&amp;#39;create_time&amp;#39;];&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; // 自动生成创建时间（时间戳）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; protected function setCreateTimeAttr()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return time();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; // 格式化日期显示（比如2026-03-10 → 2026年03月10日）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; protected function getReportDateAttr($value)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return date(&amp;#39;Y年m月d日&amp;#39;, strtotime($value));&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; }}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;点击「保存」，模型就配置完成。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;第三步：创建视图页面（新增 / 列表 / 打印，固定格式）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;视图是 “页面界面”，用户看到的表单、列表、打印页都在这里：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;宝塔「文件」→ 路径：/www/wwwroot/dgcms/application/index/view；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;右键view文件夹 → 「新建文件夹」，文件夹名daily_report（小写，和控制器名对应）；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;在daily_report文件夹里创建 3 个文件，分别粘贴对应代码：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;① 新增日报页面（add.html）—— 填写日报的表单&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;新建文件add.html，粘贴：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;html&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;预览&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;title&amp;gt;生成日报 - 我的极简日报系统&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;style&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .form-box {width: 600px; margin: 50px auto; padding: 20px; border: 1px solid #ccc;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .form-item {margin-bottom: 15px;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .form-item label {display: inline-block; width: 100px; text-align: right; margin-right: 10px;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .form-item input, .form-item select {width: 300px; padding: 5px;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .form-item textarea {width: 400px; height: 100px; padding: 5px; vertical-align: top;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .btn {padding: 8px 20px; background: #009688; color: #fff; border: none; cursor: pointer;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;h2 style=&amp;quot;text-align: center; margin-bottom: 20px;&amp;quot;&amp;gt;固定格式日报生成&amp;lt;/h2&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form action=&amp;quot;{:url(&amp;#39;add&amp;#39;)}&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;label&amp;gt;填写人：&amp;lt;/label&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;user_name&amp;quot; placeholder=&amp;quot;请输入姓名&amp;quot; required&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;label&amp;gt;部门：&amp;lt;/label&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;dept&amp;quot; placeholder=&amp;quot;请输入部门&amp;quot; required&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;label&amp;gt;日报日期：&amp;lt;/label&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type=&amp;quot;date&amp;quot; name=&amp;quot;report_date&amp;quot; value=&amp;quot;{$today}&amp;quot; required&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;label&amp;gt;今日完成：&amp;lt;/label&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;textarea name=&amp;quot;today_work&amp;quot; placeholder=&amp;quot;请填写今日完成的工作（固定格式）&amp;quot; required&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;label&amp;gt;明日计划：&amp;lt;/label&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;textarea name=&amp;quot;tomorrow_plan&amp;quot; placeholder=&amp;quot;请填写明日工作计划（固定格式）&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;label&amp;gt;备注：&amp;lt;/label&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;remark&amp;quot; placeholder=&amp;quot;其他说明&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;button type=&amp;quot;submit&amp;quot;&amp;gt;生成日报&amp;lt;/button&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/form&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;② 日报列表页面（index.html）—— 查看所有日报，可打印&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;新建文件index.html，粘贴：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;html&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;预览&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;title&amp;gt;日报列表 - 我的极简日报系统&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;style&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .container {width: 90%; margin: 50px auto;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .btn-add {display: inline-block; padding: 8px 20px; background: #009688; color: #fff; text-decoration: none; margin-bottom: 20px;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; table {width: 100%; border-collapse: collapse;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; th, td {border: 1px solid #ccc; padding: 10px; text-align: center;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; th {background: #f5f5f5;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .btn-print {color: #009688; text-decoration: none;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;a href=&amp;quot;{:url(&amp;#39;add&amp;#39;)}&amp;quot;&amp;gt;生成新日报&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;table&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;th&amp;gt;填写人&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;th&amp;gt;部门&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;th&amp;gt;日报日期&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;th&amp;gt;操作&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {volist name=&amp;quot;list&amp;quot; id=&amp;quot;vo&amp;quot;}&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td&amp;gt;{$vo.id}&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td&amp;gt;{$vo.user_name}&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td&amp;gt;{$vo.dept}&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td&amp;gt;{$vo.report_date}&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;a href=&amp;quot;{:url(&amp;#39;print&amp;#39;, [&amp;#39;id&amp;#39;=&amp;gt;$vo.id])}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;打印日报&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {/volist}&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/table&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;③ 打印专用页面（print.html）—— 固定格式，适配打印机&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;新建文件print.html，粘贴：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;html&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;预览&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;title&amp;gt;日报打印 - {$report.user_name} {$report.report_date}&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;style&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; @media print {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; body {margin: 0; padding: 0;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .print-btn {display: none;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .print-box {width: 100%; max-width: 800px; margin: 0 auto; padding: 20px; font-family: &amp;quot;微软雅黑&amp;quot;; font-size: 14px; line-height: 1.8;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .print-title {text-align: center; font-size: 18px; font-weight: bold; margin-bottom: 20px;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .print-item {margin-bottom: 10px;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .print-label {display: inline-block; width: 80px; font-weight: bold;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .print-content {display: inline-block; vertical-align: top; width: calc(100% - 90px);}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .print-line {border-bottom: 1px solid #000; margin: 15px 0;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div style=&amp;quot;text-align: right; margin-bottom: 10px;&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;button onclick=&amp;quot;window.print()&amp;quot; style=&amp;quot;padding: 8px 20px; background: #009688; color: #fff; border: none; cursor: pointer;&amp;quot;&amp;gt;打印日报&amp;lt;/button&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;工作日报&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;填写人：&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;{$report.user_name}&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;部门：&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;{$report.dept}&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;日期：&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;{$report.report_date}&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;今日完成：&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;{$report.today_work}&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;明日计划：&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;{$report.tomorrow_plan|default=&amp;#39;无&amp;#39;}&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;备注：&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;span&amp;gt;{$report.remark|default=&amp;#39;无&amp;#39;}&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;三个视图文件都保存后，视图层就完成了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;第四步：测试访问，体验你的日报系统！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;现在所有代码都已落地，直接访问以下地址就能用：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;日报列表页：http://172.16.0.51/index/daily_report/index（能看到 “生成新日报” 按钮）；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;新增日报页：点击 “生成新日报”，填写姓名、部门、今日完成等信息，提交后会提示 “生成成功”；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;打印日报：列表页点击 “打印日报”，打开新页面后点击 “打印日报” 按钮，就能调用打印机打印固定格式的日报。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;关键注意事项（避免小坑）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;文件名规范：控制器 / 模型的DailyReport.php首字母必须大写，视图文件夹daily_report必须小写；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;数据库验证：如果提示 “数据库连接失败”，检查application/database.php里的 MySQL 密码是否正确；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;缓存问题：改代码后没生效，就删除runtime目录下的缓存文件（宝塔里右键删除即可）。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;总结&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;现在你已完成 “从 0 到 1” 的核心步骤：控制器（逻辑）+ 模型（数据）+ 视图（界面）；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;访问对应地址就能体验 “固定格式日报生成 + 打印” 的完整功能，完全适配你的宝塔 + TP5 环境；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;后续想改样式（比如打印页的字体、排版），直接改视图文件里的 CSS 即可，不用动逻辑代码。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;现在快去访问http://172.16.0.51/index/daily_report/index，试试生成你的第一份日报吧！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Mar 2026 17:07:49 +0800</pubDate></item><item><title>银杏树下的四季课</title><link>https://www.bh6pei.cn/?id=14</link><description>&lt;p&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/03/202603031772528547326853.png&quot; title=&quot;图片1.png&quot; alt=&quot;图片1.png&quot;/&gt;&lt;span style=&quot;;font-family:Calibri;font-size:14px&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:等线&quot;&gt;老银杏树长在村口百年了，树洞里住着小银杏果阿银。春分那天，阿银揉着眼睛钻出树洞，看见枝头的芽尖正顶着晨露舒展，嫩得像裹了层绿纱。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;芽尖姐姐，你们怎么知道现在该醒啦？&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;” &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;阿银踮着脚问。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:等线&quot;&gt;芽尖晃了晃新叶：&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;你看叶脉上的光纹呀。&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;” &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;阿银凑过去，果然见叶片上有细细的金纹，正随着朝阳轻轻闪烁 &lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;—— &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;那是老树藏在叶里的 &lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;光钟&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;”&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;，冬天日照短，光纹蜷成小圈，像睡着的萤火虫；如今日照一天天变长，光纹慢慢展开，就把 &lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;该生长&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;” &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;的消息传给了每一个芽尖。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:等线&quot;&gt;夏天的风裹着热浪来，阿银趴在树洞里看叶片们努力光合作用。老树忽然叹了口气：&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;要开始准备啦。&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;” &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;阿银不解，明明阳光正足，怎么就要 &lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;准备&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;”&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;？直到秋分过后，他发现叶面上的光纹开始褪色，原本翠绿的叶子慢慢染成金黄。更奇怪的是，老树的树皮下渗出透明的 &lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;休眠露&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;”&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;，顺着枝干流到叶柄处，在那里聚成小小的 &lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;离层扣&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;”&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;叶子要走了吗？&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;” &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;阿银有点难过。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:等线&quot;&gt;老树轻轻摇了摇枝：&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;不是走哦。&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;” &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;他让一片黄叶飘到阿银身边，&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;你看叶子里的养分，正顺着叶脉往我枝干里流呢。光纹告诉我们日照要短了，休眠露帮着把叶子和枝丫轻轻分开，这样养分就能收回来，藏在树根里 &lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;—— &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;就像你冬天要把零食存进小盒子，不是放弃，是为了明年更有力气发芽呀。&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;”&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:等线&quot;&gt;阿银看着金黄的叶子一片片落在树根旁，像给大地盖了层暖毯，忽然懂了：原来&lt;/span&gt; &lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;放下&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;” &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;不是失去，是把珍贵的东西好好藏起来，等春天再用。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:等线&quot;&gt;冬天的雪裹住了银杏树，阿银缩在树洞里打哆嗦，却看见老树的枝芽上结着薄薄的冰壳，冰壳里隐约有红光在跳。&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;那是&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;‘&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;寒玉考验&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;’&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;。&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;” &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;老树的声音从雪层里传出来，&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;我的芽尖里藏着&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;‘&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;生长露&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;’&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;，但要等雪水的寒气冻一冻，才能把&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;‘&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;睡懒觉&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;’&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;的芽尖叫醒。要是冬天不冷，生长露就醒不过来，明年就长不出新叶啦。&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;”&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:等线&quot;&gt;阿银摸着树洞外的冰壳，忽然想起去年冬天村里的小孩说&lt;/span&gt; &lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;要经点冻，才长得壮&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;”&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;，原来植物也懂这个道理 &lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;—— &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;没有一点磨砺，哪来向上的力气？&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:等线&quot;&gt;等第一缕春风吹化雪层时，阿银惊喜地发现，枝芽上的冰壳裂了，嫩绿色的芽尖顶着雪水钻了出来。光纹在新叶上重新闪起金芒，树根里藏了一冬天的养分顺着枝干往上跑，给每一片新叶送去能量。阿银趴在树洞口，看着满树的新绿像小扇子一样展开，忽然明白：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:等线&quot;&gt;植物的智慧，从来不是急着长大，而是顺着季节的节奏，该藏时沉下心，该长时不犹豫。就像光纹会跟着日照变，休眠露会帮着收养分，寒玉会叫醒芽尖&lt;/span&gt; &lt;span style=&quot;font-family:Arial&quot;&gt;—— &lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;顺应变化，守住根本，每一个平凡的四季，都藏着向上生长的力量。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-indent: 2em;&quot;&gt;&lt;span style=&quot;;font-family:Arial;font-size:15px&quot;&gt;&lt;span style=&quot;font-family:等线&quot;&gt;后来阿银也长成了小小的银杏树，每当有人问他&lt;/span&gt; &lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;怎么知道什么时候发芽&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;”&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;，他就会指着叶面上的光纹笑：&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;“&lt;/span&gt;&lt;span style=&quot;font-family:等线&quot;&gt;你看，季节会告诉我们答案呀。&lt;/span&gt;&lt;span style=&quot;font-family:Arial&quot;&gt;”&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Tue, 03 Mar 2026 17:01:09 +0800</pubDate></item><item><title>招笑对话</title><link>https://www.bh6pei.cn/?id=13</link><description>&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602251771987304251667.jpg&quot; style=&quot;&quot; title=&quot;1.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602251771987304172448.jpg&quot; style=&quot;&quot; title=&quot;2.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602251771987305830445.jpg&quot; style=&quot;&quot; title=&quot;3.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602251771987305174190.jpg&quot; style=&quot;&quot; title=&quot;4.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602251771987306158245.jpg&quot; style=&quot;&quot; title=&quot;5.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602251771987306235469.jpg&quot; style=&quot;&quot; title=&quot;6.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602251771987306591558.jpg&quot; style=&quot;&quot; title=&quot;7.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602251771987307448935.jpg&quot; style=&quot;&quot; title=&quot;8.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602251771987307646388.jpg&quot; style=&quot;&quot; title=&quot;9.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602251771987307904825.jpg&quot; style=&quot;&quot; title=&quot;10.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 25 Feb 2026 10:40:41 +0800</pubDate></item><item><title>新春快乐</title><link>https://www.bh6pei.cn/?id=12</link><description>&lt;h1 style=&quot;box-sizing: border-box; font-size: 2rem; margin: 0px 0px 0.5em; color: rgb(34, 34, 34); font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; text-wrap: wrap;&quot;&gt;新春快乐，马年大吉&lt;/h1&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602141771028106585606.png&quot; title=&quot;生成马年大吉海报.png&quot; alt=&quot;生成马年大吉海报.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602141771027964905024.jpg&quot; style=&quot;&quot; title=&quot;下载.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.bh6pei.cn/zb_users/upload/2026/02/202602141771027966810110.jpg&quot; style=&quot;&quot; title=&quot;中式简约红金传统水墨水彩马年春节放假通知海报 拷贝.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sat, 14 Feb 2026 08:11:45 +0800</pubDate></item></channel></rss>