You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

739 lines
31 KiB

  1. /* ===== Reset & Variables ===== */
  2. *,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
  3. ul,ol{list-style:none;}
  4. :root{
  5. --orange:#E8751A;
  6. --orange-dark:#C96012;
  7. --orange-light:#F5A623;
  8. --red:#CC2929;
  9. --red-light:#E84040;
  10. --blue:#3B82C4;
  11. --blue-dark:#1A3550;
  12. --white:#fff;
  13. --gray-bg:#F5F6F8;
  14. --gray-100:#ECEEF1;
  15. --gray-300:#C4C8CE;
  16. --gray-500:#7A8290;
  17. --gray-700:#3D4451;
  18. --gray-900:#1A1D24;
  19. --font-cn:"Microsoft YaHei","PingFang SC",sans-serif;
  20. --font-en:"Roboto",sans-serif;
  21. }
  22. html,body{height:100%;font-family:var(--font-cn);color:var(--gray-900);line-height:1.7;background:#000;}
  23. a{text-decoration:none;color:inherit;transition:.2s;}
  24. img{max-width:100%;display:block;}
  25. /* ===== Fixed Header ===== */
  26. .fixed-header{
  27. position:fixed;top:0;left:0;right:0;z-index:1000;
  28. display:flex;align-items:center;justify-content:space-between;
  29. padding:0 60px;height:72px;
  30. background:rgba(255,255,255,.92);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  31. box-shadow:0 2px 12px rgba(0,0,0,.04);
  32. transition:all .4s;
  33. }
  34. .logo{display:flex;align-items:center;}
  35. .logo-img{height:44px;width:auto;transition:.3s;}
  36. .header-right{display:flex;align-items:center;gap:12px;}
  37. .header-nav{display:flex;align-items:center;gap:6px;}
  38. .nav-link{
  39. position:relative;padding:8px 18px;font-size:15px;font-weight:500;
  40. color:var(--gray-700);letter-spacing:1px;transition:.25s;border-radius:4px;
  41. }
  42. .nav-link:hover,.nav-link.active{color:var(--orange);}
  43. /* Dropdown */
  44. .nav-dropdown{position:relative;}
  45. .nav-dropdown .dropdown-menu{
  46. position:absolute;top:100%;left:50%;transform:translateX(-50%) translateY(4px);
  47. min-width:160px;background:rgba(255,255,255,.98);backdrop-filter:blur(12px);border-radius:8px;
  48. box-shadow:0 8px 32px rgba(0,0,0,.12);padding:8px 0;border:1px solid rgba(0,0,0,.06);
  49. opacity:0;visibility:hidden;transition:.25s;pointer-events:none;
  50. }
  51. .nav-dropdown:hover .dropdown-menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);pointer-events:auto;}
  52. .dropdown-menu a{display:block;padding:10px 24px;font-size:14px;color:var(--gray-700);white-space:nowrap;transition:.15s;text-align:center;}
  53. .dropdown-menu a:hover{color:var(--orange);background:rgba(232,117,26,.04);}
  54. .header-donate{
  55. padding:0 24px;border-radius:20px;font-size:14px;font-weight:600;
  56. background:var(--orange);color:#fff;border:1px solid var(--orange);
  57. cursor:pointer;transition:.3s;letter-spacing:1px;height:38px;
  58. display:flex;align-items:center;justify-content:center;
  59. }
  60. .header-donate:hover{background:var(--orange-dark);border-color:var(--orange-dark);color:#fff;}
  61. /* Mobile Menu Button */
  62. .mobile-menu-btn{
  63. display:none;width:32px;height:32px;background:none;border:none;cursor:pointer;
  64. flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:4px;
  65. }
  66. .mobile-menu-btn span{display:block;width:20px;height:2px;background:var(--gray-700);transition:.3s;}
  67. /* Mobile Menu Overlay */
  68. .mobile-menu-overlay{
  69. position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1001;
  70. opacity:0;visibility:hidden;transition:.3s;
  71. }
  72. .mobile-menu-overlay.open{opacity:1;visibility:visible;}
  73. /* Mobile Menu Drawer */
  74. .mobile-menu{
  75. position:fixed;top:0;right:-280px;width:280px;height:100%;
  76. background:#fff;z-index:1002;transition:.3s;
  77. display:flex;flex-direction:column;
  78. }
  79. .mobile-menu.open{right:0;}
  80. .mobile-menu-header{
  81. display:flex;align-items:center;justify-content:space-between;
  82. padding:16px 20px;border-bottom:1px solid var(--gray-100);
  83. }
  84. .mobile-logo{height:32px;}
  85. .mobile-menu-close{
  86. width:32px;height:32px;background:none;border:none;
  87. font-size:24px;color:var(--gray-500);cursor:pointer;
  88. }
  89. .mobile-nav{flex:1;overflow-y:auto;padding:12px 0;}
  90. .mobile-nav-item{border-bottom:1px solid var(--gray-100);}
  91. .mobile-nav-link{
  92. display:flex;align-items:center;justify-content:space-between;
  93. padding:14px 20px;font-size:15px;color:var(--gray-700);
  94. }
  95. .mobile-nav-arrow{font-size:18px;transition:.3s;}
  96. .mobile-nav-item.open .mobile-nav-arrow{transform:rotate(90deg);}
  97. .mobile-nav-sub{display:none;background:var(--gray-bg);padding:8px 0;}
  98. .mobile-nav-item.open .mobile-nav-sub{display:block;}
  99. .mobile-nav-sub a{display:block;padding:10px 20px 10px 36px;font-size:14px;color:var(--gray-500);}
  100. .mobile-nav-sub a:hover{color:var(--orange);}
  101. .mobile-menu-footer{padding:20px;border-top:1px solid var(--gray-100);}
  102. .mobile-donate-btn{
  103. display:block;width:100%;padding:12px;text-align:center;
  104. background:var(--orange);color:#fff;border-radius:24px;font-weight:600;
  105. }
  106. /* ===== Swiper Fullpage ===== */
  107. .swiper-fullpage{width:100%;height:100vh;overflow:hidden;}
  108. .swiper-fullpage .swiper-slide{height:100vh!important;overflow:hidden;position:relative;}
  109. /* ===== Slide Labels (right side dots) ===== */
  110. .slide-labels{
  111. position:fixed;right:36px;top:50%;transform:translateY(-50%);z-index:999;
  112. display:flex;flex-direction:column;gap:24px;
  113. }
  114. .slide-label{
  115. display:flex;align-items:center;gap:10px;cursor:pointer;
  116. flex-direction:row-reverse;
  117. }
  118. .slide-label .dot{
  119. width:10px;height:10px;border-radius:50%;
  120. background:rgba(255,255,255,.3);border:2px solid rgba(255,255,255,.5);
  121. transition:.3s;flex-shrink:0;
  122. }
  123. .slide-label.active .dot{
  124. background:var(--orange);border-color:var(--orange);
  125. width:10px;height:24px;border-radius:5px;
  126. }
  127. .slide-label .txt{
  128. font-size:12px;color:rgba(255,255,255,.5);letter-spacing:1px;
  129. opacity:0;transform:translateX(8px);transition:.25s;white-space:nowrap;
  130. }
  131. .slide-label:hover .txt{opacity:1;transform:translateX(0);}
  132. .slide-label.active .txt{opacity:1;transform:translateX(0);color:var(--orange);}
  133. .slide-labels.light .slide-label .dot{background:rgba(0,0,0,.1);border-color:rgba(0,0,0,.2);}
  134. .slide-labels.light .slide-label.active .dot{background:var(--orange);border-color:var(--orange);}
  135. .slide-labels.light .slide-label .txt{color:rgba(0,0,0,.3);}
  136. .slide-labels.light .slide-label.active .txt{color:var(--orange);}
  137. /* ===== Slide 1: Banner ===== */
  138. .slide-banner{background:#0a0a0a;height:100vh;position:relative;}
  139. .banner-swiper{width:100%;height:100%;}
  140. .banner-swiper .swiper-slide{height:100vh!important;overflow:hidden;}
  141. .banner-slide-bg{
  142. position:absolute;inset:0;
  143. background:center/cover no-repeat;
  144. filter:brightness(.85);transition:transform 6s ease-out;
  145. }
  146. .banner-swiper .swiper-slide-active .banner-slide-bg{transform:scale(1.05);}
  147. .banner-slide-content{
  148. position:absolute;top:50%;left:120px;transform:translateY(-50%);
  149. z-index:2;display:flex;flex-direction:column;
  150. align-items:flex-start;max-width:700px;
  151. }
  152. .banner-slide-content.pos-left{left:120px;right:auto;align-items:flex-start;text-align:left;}
  153. .banner-slide-content.pos-center{left:50%;transform:translate(-50%,-50%);align-items:center;text-align:center;}
  154. .banner-slide-content.pos-right{left:auto;right:120px;align-items:flex-end;text-align:right;}
  155. .banner-slide-content.glass-on{
  156. background:rgba(0,0,0,.25);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  157. border-radius:16px;border:1px solid rgba(255,255,255,.1);
  158. padding:48px 60px;
  159. }
  160. .banner-slide-content.pos-center.glass-on{transform:translate(-50%,-50%);}
  161. .banner-slide-content h1{
  162. font-size:48px;font-weight:700;color:#fff;line-height:1.3;
  163. margin-bottom:20px;letter-spacing:2px;
  164. opacity:0;transform:translateY(40px);transition:all .8s .3s;
  165. }
  166. .banner-swiper .swiper-slide-active .banner-slide-content h1{opacity:1;transform:translateY(0);}
  167. .banner-slide-content .desc{
  168. font-size:16px;color:rgba(255,255,255,.75);line-height:1.9;max-width:600px;
  169. margin-bottom:40px;
  170. opacity:0;transform:translateY(30px);transition:all .8s .5s;
  171. }
  172. .banner-swiper .swiper-slide-active .banner-slide-content .desc{opacity:1;transform:translateY(0);}
  173. .banner-slide-content .btns{
  174. display:flex;gap:16px;
  175. opacity:0;transform:translateY(20px);transition:all .8s .7s;
  176. }
  177. .banner-swiper .swiper-slide-active .banner-slide-content .btns{opacity:1;transform:translateY(0);}
  178. .banner-swiper .swiper-pagination{bottom:90px!important;}
  179. .banner-swiper .swiper-pagination-bullet{
  180. width:32px;height:4px;border-radius:2px;
  181. background:rgba(255,255,255,.35);opacity:1;border:none;transition:.3s;
  182. }
  183. .banner-swiper .swiper-pagination-bullet-active{width:48px;background:var(--orange);}
  184. .btn-primary{
  185. padding:14px 40px;border-radius:30px;font-size:15px;font-weight:600;
  186. background:var(--orange);color:#fff;letter-spacing:1px;transition:.3s;
  187. display:inline-block;
  188. }
  189. .btn-primary:hover{background:var(--orange-dark);transform:translateY(-2px);box-shadow:0 8px 24px rgba(232,117,26,.3);}
  190. .btn-ghost{
  191. padding:14px 40px;border-radius:30px;font-size:15px;font-weight:600;
  192. background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.5);
  193. letter-spacing:1px;transition:.3s;display:inline-block;
  194. }
  195. .btn-ghost:hover{border-color:#fff;background:rgba(255,255,255,.1);}
  196. .scroll-hint{
  197. position:absolute;bottom:40px;left:50%;transform:translateX(-50%);z-index:2;
  198. display:flex;flex-direction:column;align-items:center;gap:8px;
  199. color:rgba(255,255,255,.5);font-size:12px;letter-spacing:2px;
  200. }
  201. .scroll-hint .mouse{
  202. width:24px;height:38px;border:2px solid rgba(255,255,255,.4);border-radius:12px;
  203. position:relative;
  204. }
  205. .scroll-hint .mouse::after{
  206. content:"";position:absolute;top:6px;left:50%;transform:translateX(-50%);
  207. width:3px;height:8px;background:rgba(255,255,255,.6);border-radius:2px;
  208. animation:scrollDown 1.8s infinite;
  209. }
  210. @keyframes scrollDown{0%{opacity:1;top:6px;}100%{opacity:0;top:22px;}}
  211. /* ===== Slide 2: Donation Data ===== */
  212. .slide-donation{
  213. background:linear-gradient(135deg,#fff8f0 0%,#fff 50%,#f0f7ff 100%);
  214. display:flex;align-items:center;justify-content:center;
  215. height:100vh;padding-top:72px;
  216. }
  217. .donation-wrap{
  218. width:100%;max-width:1300px;padding:0 40px;
  219. max-height:calc(100vh - 72px);overflow:hidden;
  220. opacity:0;transform:translateY(50px);transition:all .9s .2s;
  221. display:flex;flex-direction:column;
  222. }
  223. .swiper-slide-active .donation-wrap{opacity:1;transform:translateY(0);}
  224. .section-head{text-align:center;margin-bottom:2vh;}
  225. .section-head h2{font-size:clamp(24px,3vw,36px);font-weight:700;color:var(--gray-900);margin-bottom:4px;}
  226. .section-head h2::after{content:"";display:block;width:40px;height:3px;background:linear-gradient(90deg,var(--red),var(--orange));margin:8px auto 0;border-radius:2px;}
  227. .section-head .en{font-family:var(--font-en);font-size:13px;color:var(--gray-300);letter-spacing:3px;text-transform:uppercase;}
  228. .data-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:2vh;}
  229. .data-card{
  230. background:rgba(255,255,255,.65);backdrop-filter:blur(16px);
  231. border-radius:14px;padding:18px 16px;text-align:center;
  232. box-shadow:0 8px 32px rgba(0,0,0,.06),inset 0 1px 0 rgba(255,255,255,.8);
  233. border:1px solid rgba(255,255,255,.6);transition:.3s;
  234. }
  235. .data-card:hover{transform:translateY(-4px);box-shadow:0 16px 48px rgba(232,117,26,.12);border-color:var(--orange-light);}
  236. .data-card .label{font-size:14px;color:var(--gray-500);margin-bottom:4px;}
  237. .data-card .amount{font-family:var(--font-en);font-size:clamp(20px,2.2vw,28px);font-weight:700;color:var(--orange);}
  238. .data-card .amount .unit{font-size:14px;color:var(--gray-500);font-weight:400;margin-left:4px;}
  239. .data-card .note{font-size:12px;color:var(--gray-300);margin-top:2px;}
  240. .donation-tables{display:grid;grid-template-columns:1fr 1fr;gap:16px;flex:1;min-height:0;}
  241. .dtable{
  242. background:rgba(255,255,255,.6);backdrop-filter:blur(16px);
  243. border-radius:14px;padding:14px;
  244. box-shadow:0 8px 32px rgba(0,0,0,.06);border:1px solid rgba(255,255,255,.6);
  245. }
  246. .dtable h3{font-size:14px;font-weight:600;color:var(--gray-900);margin-bottom:6px;padding-bottom:5px;border-bottom:2px solid var(--orange-light);}
  247. .dtable table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed;}
  248. .dtable th{text-align:center;padding:5px 8px;color:var(--gray-500);font-weight:500;border-bottom:1px solid var(--gray-100);}
  249. .dtable td{text-align:center;padding:5px 8px;color:var(--gray-700);border-bottom:1px solid var(--gray-100);}
  250. .dtable .td-r{font-family:var(--font-en);font-weight:500;color:var(--orange);}
  251. .dtable-head{margin-bottom:0;}
  252. .dtable-scroll-wrap{max-height:140px;overflow:hidden;position:relative;}
  253. .dtable-scroll-wrap.donation-scroll .dtable-scroll-inner{animation:donationScroll 15s linear infinite;}
  254. .dtable-scroll-wrap.donation-scroll:hover .dtable-scroll-inner{animation-play-state:paused;}
  255. @keyframes donationScroll{0%{transform:translateY(0);}100%{transform:translateY(-50%);}}
  256. .dtable-drug{grid-column:1/-1;}
  257. .dtable-drug h3{border-bottom-color:var(--orange);}
  258. .dtable-drug .drug-name{color:var(--orange);font-weight:500;}
  259. .drug-scroll-wrap{max-height:120px;overflow:hidden;position:relative;}
  260. .drug-scroll-inner{animation:drugScroll 18s linear infinite;}
  261. .drug-scroll-wrap:hover .drug-scroll-inner{animation-play-state:paused;}
  262. @keyframes drugScroll{0%{transform:translateY(0);}100%{transform:translateY(-50%);}}
  263. /* ===== Slide 3: Projects ===== */
  264. .slide-projects{
  265. position:relative;height:100vh;overflow:hidden;cursor:grab;
  266. }
  267. .slide-projects.dragging{cursor:grabbing;}
  268. .slide-projects .proj-bg{
  269. position:absolute;inset:0;
  270. background:center/cover no-repeat;
  271. filter:brightness(.65);
  272. transition:opacity .8s,transform 6s ease-out;
  273. opacity:0;
  274. }
  275. .slide-projects .proj-bg.active{opacity:1;}
  276. .swiper-slide-active .slide-projects .proj-bg.active{transform:scale(1.04);}
  277. .proj-info-card{
  278. position:absolute;top:50%;right:8%;transform:translateY(-50%);
  279. width:380px;
  280. background:rgba(232,117,26,.88);backdrop-filter:blur(8px);
  281. border-radius:4px;padding:48px 40px;color:#fff;
  282. opacity:0;transform:translateY(-50%) translateX(40px);
  283. transition:all .7s .3s;z-index:5;
  284. }
  285. .swiper-slide-active .proj-info-card{opacity:1;transform:translateY(-50%) translateX(0);}
  286. .proj-info-card .card-label{
  287. font-size:13px;letter-spacing:3px;opacity:.8;margin-bottom:12px;
  288. display:flex;align-items:center;gap:8px;
  289. }
  290. .proj-info-card .card-label::before{
  291. content:"";display:block;width:24px;height:2px;background:var(--red-light);opacity:.8;
  292. }
  293. .proj-info-card h3{font-size:28px;font-weight:700;line-height:1.4;margin-bottom:16px;}
  294. .proj-info-card .card-divider{width:40px;height:2px;background:#fff;opacity:.5;margin-bottom:16px;}
  295. .proj-info-card p{font-size:15px;line-height:1.9;opacity:.9;margin-bottom:24px;}
  296. .proj-info-card .card-btn{
  297. display:inline-flex;align-items:center;gap:6px;
  298. padding:10px 28px;border:1.5px solid rgba(255,255,255,.6);border-radius:24px;
  299. font-size:14px;color:#fff;transition:.3s;
  300. }
  301. .proj-info-card .card-btn:hover{background:rgba(255,255,255,.15);border-color:#fff;}
  302. .proj-tabs{
  303. position:absolute;bottom:60px;left:50%;transform:translateX(-50%);
  304. z-index:5;display:flex;gap:0;
  305. }
  306. .proj-tab{
  307. padding:14px 28px;cursor:pointer;
  308. font-size:14px;color:rgba(255,255,255,.6);
  309. border-bottom:3px solid transparent;
  310. transition:.3s;white-space:nowrap;letter-spacing:1px;
  311. }
  312. .proj-tab:hover{color:rgba(255,255,255,.85);}
  313. .proj-tab.active{color:#fff;border-bottom-color:var(--red);font-weight:600;}
  314. .proj-more-link{
  315. position:absolute;bottom:24px;left:50%;transform:translateX(-50%);
  316. z-index:5;font-size:13px;color:rgba(255,255,255,.5);
  317. letter-spacing:2px;transition:.2s;
  318. }
  319. .proj-more-link:hover{color:var(--orange);}
  320. /* ===== Slide 4: News ===== */
  321. .slide-news{
  322. background:#fff;
  323. display:flex;align-items:center;justify-content:center;
  324. height:100vh;padding-top:72px;
  325. }
  326. .news-wrap{
  327. width:100%;max-width:1200px;padding:0 60px;
  328. max-height:calc(100vh - 72px);overflow:hidden;
  329. opacity:0;transform:translateY(50px);transition:all .9s .2s;
  330. }
  331. .swiper-slide-active .news-wrap{opacity:1;transform:translateY(0);}
  332. .news-grid{display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:stretch;}
  333. .news-featured{border-radius:14px;overflow:hidden;position:relative;cursor:pointer;display:flex;}
  334. .news-featured img{width:100%;height:100%;object-fit:cover;transition:.5s;}
  335. .news-featured:hover img{transform:scale(1.03);}
  336. .news-featured .overlay{
  337. position:absolute;bottom:0;left:0;right:0;
  338. padding:24px;background:linear-gradient(transparent,rgba(0,0,0,.7));
  339. color:#fff;
  340. }
  341. .news-featured .overlay h3{font-size:16px;font-weight:600;margin-bottom:4px;}
  342. .news-featured .overlay .date{font-size:13px;opacity:.7;}
  343. .news-list{display:flex;flex-direction:column;gap:0;}
  344. .news-item{
  345. display:flex;align-items:flex-start;gap:16px;
  346. padding:14px 0;border-bottom:1px solid var(--gray-100);
  347. cursor:pointer;transition:.2s;
  348. }
  349. .news-item:hover{padding-left:8px;}
  350. .news-item .date-box{flex-shrink:0;width:54px;text-align:center;}
  351. .news-item .date-box .day{font-family:var(--font-en);font-size:28px;font-weight:700;color:var(--orange);line-height:1;}
  352. .news-item .date-box .ym{font-size:12px;color:var(--gray-300);white-space:nowrap;margin-top:2px;}
  353. .news-item .text h4{font-size:14px;font-weight:500;color:var(--gray-900);margin-bottom:4px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
  354. .news-item .text p{font-size:13px;color:var(--gray-500);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}
  355. .more-link{font-size:13px;color:var(--orange);letter-spacing:1px;}
  356. .more-link:hover{text-decoration:underline;}
  357. /* ===== Slide 5: Partners + Footer ===== */
  358. .slide-footer{
  359. background:#F8F9FA;
  360. display:flex;flex-direction:column;justify-content:flex-start;align-items:center;
  361. height:100vh;padding-top:72px;overflow:hidden;
  362. }
  363. .partners-section{
  364. width:100%;max-width:1200px;padding:40px 60px;flex:1;
  365. display:flex;flex-direction:column;
  366. opacity:0;transform:translateY(50px);transition:all .9s .2s;
  367. }
  368. .swiper-slide-active .partners-section{opacity:1;transform:translateY(0);}
  369. .partners-grid{
  370. display:grid;grid-template-columns:repeat(5,1fr);gap:20px;
  371. flex:1;align-content:center;
  372. }
  373. .partner-item{
  374. background:#fff;border-radius:12px;padding:20px;
  375. display:flex;align-items:center;justify-content:center;
  376. box-shadow:0 2px 12px rgba(0,0,0,.03);border:1px solid var(--gray-100);
  377. transition:.3s;min-height:90px;
  378. }
  379. .partner-item:hover{box-shadow:0 8px 24px rgba(0,0,0,.08);transform:translateY(-2px);}
  380. .partner-item img{max-height:48px;width:auto;filter:grayscale(.3);transition:.3s;}
  381. .partner-item:hover img{filter:grayscale(0);}
  382. /* Footer */
  383. .footer-component{
  384. width:100%;background:#371806;position:relative;
  385. display:flex;flex-direction:column;flex-shrink:0;
  386. }
  387. .footer-main{flex:1;display:flex;align-items:center;padding:32px 0;}
  388. .footer-content{
  389. max-width:1200px;width:100%;margin:0 auto;padding:0 40px;
  390. display:flex;justify-content:space-between;align-items:center;
  391. }
  392. .footer-left{flex:1;}
  393. .footer-title{font-size:24px;font-weight:600;color:#BC6627;margin-bottom:20px;letter-spacing:1px;}
  394. .footer-info{display:flex;flex-direction:column;gap:8px;}
  395. .footer-info p{font-size:14px;color:#BC6627;line-height:1.6;}
  396. .footer-right{display:flex;align-items:center;gap:16px;}
  397. .footer-qr{text-align:center;}
  398. .footer-qr img{width:100px;height:100px;border-radius:4px;margin-bottom:8px;background:#fff;}
  399. .footer-qr span{font-size:12px;color:#BC6627;display:block;}
  400. .footer-bottom{border-top:1px solid #603D2E;padding:16px 0;}
  401. .footer-bottom-content{
  402. max-width:1200px;width:100%;margin:0 auto;padding:0 40px;
  403. display:flex;justify-content:space-between;align-items:center;
  404. }
  405. .footer-copyright{font-size:12px;color:#86543F;}
  406. .footer-links{display:flex;gap:24px;align-items:center;}
  407. .footer-links a{font-size:12px;color:#86543F;transition:color .2s;}
  408. .footer-links a:hover{color:#BC6627;}
  409. .footer-links .separator{color:#86543F;opacity:.3;}
  410. /* ===== Responsive ===== */
  411. @media(max-width:1024px){
  412. .fixed-header{padding:0 24px;}
  413. .banner-slide-content{left:40px;max-width:600px;}
  414. .banner-slide-content.pos-left{left:40px;}
  415. .banner-slide-content.pos-right{right:40px;}
  416. .banner-slide-content.glass-on{padding:36px 40px;}
  417. .banner-slide-content h1{font-size:32px;}
  418. .data-cards{gap:12px;}
  419. .donation-tables{gap:12px;}
  420. .donation-wrap,.news-wrap{padding:0 32px;}
  421. .proj-info-card{width:340px;padding:36px 32px;right:5%;}
  422. .proj-info-card h3{font-size:24px;}
  423. .proj-info-card p{font-size:14px;}
  424. .proj-tab{padding:12px 20px;font-size:13px;}
  425. .news-grid{gap:24px;}
  426. .partners-grid{grid-template-columns:repeat(4,1fr);}
  427. .partners-section{padding:40px 32px;}
  428. .slide-labels{display:none;}
  429. }
  430. @media(max-width:768px){
  431. .header-nav{display:none;}
  432. .mobile-menu-btn{display:flex;}
  433. .header-donate{display:none;}
  434. .banner-slide-content{left:24px;right:24px;max-width:calc(100% - 48px);}
  435. .banner-slide-content.pos-left{left:24px;right:auto;max-width:calc(100% - 48px);}
  436. .banner-slide-content.pos-center{left:50%;right:auto;}
  437. .banner-slide-content.pos-right{left:auto;right:24px;max-width:calc(100% - 48px);}
  438. .banner-slide-content.glass-on{padding:24px 28px;}
  439. .banner-slide-content h1{font-size:26px;}
  440. .donation-wrap,.news-wrap{padding:0 20px;}
  441. .data-cards{grid-template-columns:repeat(3,1fr);gap:8px;}
  442. .data-card{padding:12px 8px;}
  443. .data-card .amount{font-size:18px;}
  444. .data-card .label{font-size:12px;}
  445. .data-card .note{font-size:11px;}
  446. .donation-tables{grid-template-columns:1fr;gap:8px;}
  447. .dtable-drug{grid-column:1/-1;}
  448. .dtable-scroll-wrap{max-height:90px;}
  449. .drug-scroll-wrap{max-height:70px;}
  450. .dtable{padding:10px 12px;}
  451. .dtable h3{font-size:13px;margin-bottom:4px;padding-bottom:4px;}
  452. .dtable td,.dtable th{font-size:12px;padding:4px 6px;}
  453. .proj-info-card{
  454. width:auto;left:20px;right:20px;top:auto;bottom:100px;
  455. transform:none;padding:20px;
  456. max-height:calc(100vh - 200px);overflow-y:auto;
  457. }
  458. .swiper-slide-active .proj-info-card{transform:none;opacity:1;}
  459. .proj-info-card h3{font-size:20px;margin-bottom:10px;}
  460. .proj-info-card p{font-size:14px;margin-bottom:16px;line-height:1.6;}
  461. .proj-tabs{bottom:16px;left:16px;right:16px;transform:none;flex-wrap:wrap;justify-content:center;gap:4px;}
  462. .proj-tab{padding:6px 12px;font-size:12px;}
  463. .proj-more-link{display:none;}
  464. .news-grid{grid-template-columns:1fr;}
  465. .news-featured img{height:200px;}
  466. .partners-grid{grid-template-columns:repeat(3,1fr);gap:12px;}
  467. .partners-section{padding:24px 20px;}
  468. .footer-content{flex-direction:column;align-items:flex-start;gap:24px;}
  469. .footer-main{padding:24px 0;}
  470. .footer-bottom-content{flex-direction:column;gap:12px;text-align:center;}
  471. .footer-links{flex-wrap:wrap;justify-content:center;gap:8px 12px;}
  472. .section-head{margin-bottom:1vh;}
  473. }
  474. @media(max-width:480px){
  475. .fixed-header{padding:0 16px;height:56px;}
  476. .logo-img{height:32px;}
  477. .banner-slide-content{left:16px;right:16px;max-width:calc(100% - 32px);}
  478. .banner-slide-content.pos-left{left:16px;right:auto;}
  479. .banner-slide-content.pos-right{left:auto;right:16px;}
  480. .banner-slide-content.glass-on{padding:20px 24px;}
  481. .banner-slide-content h1{font-size:20px;}
  482. .banner-slide-content .desc{font-size:14px;}
  483. .btn-primary,.btn-ghost{padding:10px 24px;font-size:13px;}
  484. .donation-wrap,.news-wrap{padding:0 12px;}
  485. .section-head h2{font-size:20px;}
  486. .data-cards{gap:6px;}
  487. .data-card{padding:8px 6px;border-radius:10px;}
  488. .data-card .label{font-size:11px;margin-bottom:2px;}
  489. .data-card .amount{font-size:16px;}
  490. .data-card .note{font-size:10px;}
  491. .donation-tables{gap:8px;}
  492. .dtable{padding:8px 10px;border-radius:10px;}
  493. .dtable h3{font-size:12px;margin-bottom:4px;padding-bottom:4px;}
  494. .dtable td,.dtable th{font-size:11px;padding:3px 4px;}
  495. .dtable-scroll-wrap{max-height:72px;}
  496. .drug-scroll-wrap{max-height:60px;}
  497. .dtable-drug th:nth-child(3),.dtable-drug td:nth-child(3){display:none;}
  498. .proj-info-card{left:12px;right:12px;bottom:80px;padding:16px 14px;}
  499. .proj-info-card h3{font-size:18px;}
  500. .proj-info-card p{font-size:13px;margin-bottom:12px;-webkit-line-clamp:3;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}
  501. .proj-info-card .card-label{font-size:11px;margin-bottom:8px;}
  502. .proj-info-card .card-btn{padding:8px 20px;font-size:12px;}
  503. .proj-tabs{bottom:8px;left:8px;right:8px;}
  504. .proj-tab{padding:5px 8px;font-size:11px;}
  505. .news-item .date-box .day{font-size:22px;}
  506. .news-item .text h4{font-size:13px;}
  507. .partners-grid{grid-template-columns:repeat(2,1fr);gap:8px;}
  508. .partner-item{padding:12px;border-radius:8px;min-height:70px;}
  509. .partner-item img{max-height:36px;}
  510. .footer-title{font-size:18px;margin-bottom:12px;}
  511. .footer-info p{font-size:12px;}
  512. .footer-qr img{width:80px;height:80px;}
  513. .footer-qr span{font-size:11px;}
  514. .section-head{margin-bottom:0.5vh;}
  515. .section-head .en{display:none;}
  516. .slide-footer{padding-top:56px;}
  517. .slide-donation{padding-top:56px;}
  518. .slide-news{padding-top:56px;}
  519. }
  520. /* ===== Column Page ===== */
  521. .col-banner{
  522. position:relative;height:280px;
  523. background:center/cover no-repeat var(--orange);
  524. display:flex;align-items:center;justify-content:center;
  525. margin-top:72px;
  526. }
  527. .col-banner-overlay{
  528. position:absolute;inset:0;
  529. background:linear-gradient(180deg,rgba(0,0,0,.15) 0%,rgba(0,0,0,.4) 100%);
  530. }
  531. .col-banner-content{
  532. position:relative;z-index:1;text-align:center;color:#fff;
  533. }
  534. .col-banner-content h1{
  535. font-size:42px;font-weight:700;letter-spacing:2px;margin-bottom:12px;
  536. }
  537. .col-banner-en{
  538. font-family:var(--font-en);font-size:16px;letter-spacing:3px;
  539. text-transform:uppercase;opacity:.9;margin-bottom:16px;
  540. }
  541. .col-banner-desc{
  542. font-size:18px;opacity:.95;letter-spacing:2px;
  543. }
  544. /* Sub Tabs */
  545. .col-tabs-wrap{
  546. background:var(--gray-bg);border-bottom:none;
  547. position:sticky;top:72px;z-index:100;padding:12px 0;
  548. }
  549. .col-tabs{
  550. max-width:1200px;margin:0 auto;display:flex;justify-content:center;
  551. gap:24px;align-items:center;
  552. }
  553. .col-tab{
  554. padding:6px 32px;font-size:16px;color:#606266;
  555. border:none;border-radius:24px;transition:.3s;white-space:nowrap;
  556. font-weight:500;background:transparent;
  557. }
  558. .col-tab:hover{color:#fff;background:rgba(232,117,26,.8);}
  559. .col-tab.active{
  560. color:#fff;background:var(--orange);font-weight:600;
  561. }
  562. /* Breadcrumb */
  563. .col-breadcrumb-wrap{
  564. background:#fff;border-bottom:none;
  565. }
  566. .col-breadcrumb{
  567. max-width:1200px;margin:0 auto;padding:20px 0;
  568. font-size:14px;color:#909399;
  569. }
  570. .col-breadcrumb a{color:#606266;transition:.2s;}
  571. .col-breadcrumb a:hover{color:var(--orange);}
  572. .col-breadcrumb .sep{margin:0 8px;color:#C0C4CC;}
  573. .col-breadcrumb .current{color:var(--orange);}
  574. /* Content Area */
  575. .col-content-wrap{background:#fff;min-height:50vh;}
  576. .col-content{
  577. max-width:1200px;margin:0 auto;padding:40px;
  578. }
  579. .col-empty{
  580. text-align:center;padding:80px 0;color:var(--gray-300);font-size:15px;
  581. }
  582. /* Section Title */
  583. .col-section-title{
  584. font-size:28px;font-weight:700;color:var(--gray-900);
  585. margin-bottom:32px;padding-bottom:16px;
  586. border-bottom:3px solid var(--orange);display:inline-block;
  587. }
  588. /* Page Content */
  589. .col-page-body{line-height:2;font-size:15px;color:var(--gray-700);}
  590. .col-page-body img{max-width:100%;height:auto;border-radius:8px;margin:16px 0;}
  591. .col-page-body p{margin-bottom:16px;}
  592. /* Article List */
  593. .col-article-list{display:flex;flex-direction:column;gap:24px;}
  594. .col-article-item{
  595. display:flex;gap:24px;padding:20px 0;
  596. border-bottom:1px solid var(--gray-100);transition:.2s;
  597. }
  598. .col-article-item:hover{padding-left:8px;}
  599. .col-article-cover{flex-shrink:0;width:240px;height:160px;border-radius:8px;overflow:hidden;}
  600. .col-article-cover img{width:100%;height:100%;object-fit:cover;transition:.3s;}
  601. .col-article-item:hover .col-article-cover img{transform:scale(1.05);}
  602. .col-article-info{flex:1;display:flex;flex-direction:column;justify-content:center;}
  603. .col-article-info h3{font-size:18px;font-weight:600;color:var(--gray-900);margin-bottom:8px;line-height:1.5;}
  604. .col-article-info p{font-size:14px;color:var(--gray-500);line-height:1.8;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
  605. .col-article-meta{margin-top:auto;padding-top:12px;display:flex;gap:16px;font-size:13px;color:var(--gray-300);}
  606. .col-article-meta .cate{color:var(--orange);}
  607. /* Image Grid (Certificate Style) */
  608. .col-image-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
  609. .col-image-item{
  610. background:#fff;border-radius:8px;overflow:hidden;
  611. box-shadow:0 4px 16px rgba(0,0,0,.08);transition:.3s;cursor:pointer;
  612. }
  613. .col-image-item:hover{transform:translateY(-4px);box-shadow:0 12px 32px rgba(232,117,26,.15);}
  614. .col-image-thumb{
  615. width:100%;height:320px;background:var(--gray-bg);
  616. display:flex;align-items:center;justify-content:center;overflow:hidden;
  617. }
  618. .col-image-thumb img{width:100%;height:100%;object-fit:contain;padding:16px;}
  619. .col-image-title{
  620. padding:16px;text-align:center;font-size:14px;color:var(--gray-900);background:#fff;
  621. }
  622. /* Text List */
  623. .col-text-list{display:flex;flex-direction:column;}
  624. .col-text-item{
  625. display:flex;align-items:center;justify-content:space-between;
  626. padding:16px 0;border-bottom:1px solid var(--gray-100);transition:.2s;
  627. }
  628. .col-text-item:hover{padding-left:8px;}
  629. .col-text-title{font-size:15px;color:var(--gray-700);}
  630. .col-text-title a{color:var(--gray-700);transition:.2s;}
  631. .col-text-title a:hover{color:var(--orange);}
  632. .col-text-date{font-size:13px;color:var(--gray-300);flex-shrink:0;margin-left:24px;}
  633. /* Person Grid (Team Member Card Style) */
  634. .col-person-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;}
  635. .col-person-card{
  636. background:#fff;border-radius:12px;overflow:hidden;
  637. box-shadow:0 4px 16px rgba(0,0,0,.08);transition:.3s;
  638. }
  639. .col-person-card:hover{transform:translateY(-4px);box-shadow:0 12px 32px rgba(232,117,26,.15);}
  640. .col-person-photo{
  641. width:100%;height:280px;background:var(--gray-bg);
  642. display:flex;align-items:center;justify-content:center;overflow:hidden;
  643. }
  644. .col-person-photo img{width:100%;height:100%;object-fit:cover;}
  645. .col-person-placeholder{
  646. width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  647. background:var(--orange);color:#fff;font-size:48px;font-weight:700;
  648. }
  649. .col-person-info{padding:24px;}
  650. .col-person-name{font-size:18px;font-weight:600;color:var(--gray-900);margin-bottom:8px;}
  651. .col-person-title{font-size:14px;color:var(--orange);margin-bottom:12px;}
  652. .col-person-bio{font-size:14px;color:#606266;line-height:1.8;}
  653. .col-person-cate{font-size:12px;color:var(--orange);margin-top:4px;}
  654. /* Job List */
  655. .col-job-list{display:flex;flex-direction:column;gap:16px;}
  656. .col-job-item{
  657. padding:24px;border:1px solid var(--gray-100);border-radius:8px;transition:.2s;
  658. }
  659. .col-job-item:hover{border-color:var(--orange);box-shadow:0 4px 16px rgba(232,117,26,.08);}
  660. .col-job-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
  661. .col-job-header h3{font-size:18px;font-weight:600;color:var(--gray-900);}
  662. .col-job-loc{font-size:13px;color:var(--gray-500);background:var(--gray-bg);padding:4px 12px;border-radius:4px;}
  663. .col-job-desc{font-size:14px;color:var(--gray-500);line-height:1.8;}
  664. /* Column Page Responsive */
  665. @media(max-width:768px){
  666. .col-banner{height:220px;}
  667. .col-banner-content h1{font-size:28px;}
  668. .col-tabs-wrap{top:56px;}
  669. .col-tabs{overflow-x:auto;justify-content:flex-start;padding:0 16px;-webkit-overflow-scrolling:touch;}
  670. .col-tab{padding:6px 20px;font-size:14px;white-space:nowrap;}
  671. .col-content{padding:24px 20px;}
  672. .col-breadcrumb{padding:16px 20px;}
  673. .col-article-cover{width:140px;height:100px;}
  674. .col-article-info h3{font-size:15px;}
  675. .col-image-grid{grid-template-columns:1fr;gap:16px;}
  676. .col-image-thumb{height:280px;}
  677. .col-person-grid{grid-template-columns:1fr;gap:16px;}
  678. .col-person-photo{height:240px;}
  679. }
  680. @media(max-width:480px){
  681. .col-banner{height:180px;}
  682. .col-banner-content h1{font-size:22px;}
  683. .col-banner-en{font-size:12px;}
  684. .col-tab{padding:5px 16px;font-size:13px;}
  685. .col-content{padding:20px 16px;}
  686. .col-article-item{flex-direction:column;gap:12px;}
  687. .col-article-cover{width:100%;height:180px;}
  688. .col-image-grid{grid-template-columns:1fr;gap:12px;}
  689. .col-person-grid{grid-template-columns:1fr;gap:12px;}
  690. }