fb-search.css 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. :root {
  2. --fb-bg-url: url('/fb-wallpaper/frappe.webp?v=20260306w');
  3. --fb-accent: #8caaee;
  4. --fb-accent-2: #ca9ee6;
  5. --fb-text: #c6d0f5;
  6. --fb-subtext: #a5adce;
  7. --fb-base: #303446;
  8. --fb-mantle: #292c3c;
  9. --fb-crust: #232634;
  10. --fb-surface: rgba(48, 52, 70, 0.78);
  11. --fb-surface-strong: rgba(41, 44, 60, 0.92);
  12. --fb-border: rgba(198, 208, 245, 0.20);
  13. }
  14. * { box-sizing: border-box; }
  15. html, body {
  16. margin: 0;
  17. height: 100%;
  18. color: var(--fb-text);
  19. font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  20. }
  21. .bg {
  22. position: fixed;
  23. inset: 0;
  24. background:
  25. radial-gradient(circle at 15% 20%, color-mix(in srgb, var(--fb-accent-2) 28%, transparent), transparent 45%),
  26. radial-gradient(circle at 80% 15%, color-mix(in srgb, var(--fb-accent) 24%, transparent), transparent 40%),
  27. var(--fb-bg-url) center/cover no-repeat;
  28. opacity: 0.36;
  29. z-index: 0;
  30. }
  31. .overlay {
  32. position: fixed;
  33. inset: 0;
  34. background: linear-gradient(180deg, color-mix(in srgb, var(--fb-crust) 82%, transparent), color-mix(in srgb, var(--fb-crust) 92%, transparent));
  35. z-index: 0;
  36. }
  37. .topbar, .layout {
  38. position: relative;
  39. z-index: 1;
  40. }
  41. .topbar {
  42. height: 68px;
  43. display: grid;
  44. grid-template-columns: 220px 1fr 120px;
  45. align-items: center;
  46. gap: 12px;
  47. padding: 12px 18px;
  48. border-bottom: 1px solid var(--fb-border);
  49. background: var(--fb-surface-strong);
  50. backdrop-filter: blur(10px);
  51. }
  52. .brand {
  53. font-size: 16px;
  54. font-weight: 700;
  55. }
  56. .search-form {
  57. display: flex;
  58. gap: 8px;
  59. }
  60. .search-form input {
  61. flex: 1;
  62. height: 40px;
  63. border-radius: 10px;
  64. border: 1px solid var(--fb-border);
  65. background: color-mix(in srgb, var(--fb-base) 72%, transparent);
  66. color: var(--fb-text);
  67. padding: 0 12px;
  68. outline: none;
  69. }
  70. .search-form button,
  71. .back-link {
  72. height: 40px;
  73. border-radius: 10px;
  74. border: 1px solid var(--fb-border);
  75. padding: 0 14px;
  76. color: var(--fb-text);
  77. background: color-mix(in srgb, var(--fb-base) 72%, transparent);
  78. text-decoration: none;
  79. display: inline-flex;
  80. align-items: center;
  81. justify-content: center;
  82. cursor: pointer;
  83. }
  84. .search-form button:hover,
  85. .back-link:hover {
  86. background: color-mix(in srgb, var(--fb-accent) 20%, transparent);
  87. }
  88. .layout {
  89. display: grid;
  90. grid-template-columns: 360px 1fr;
  91. gap: 14px;
  92. padding: 14px;
  93. height: calc(100% - 68px);
  94. }
  95. .left-panel,
  96. .right-panel {
  97. border: 1px solid var(--fb-border);
  98. border-radius: 12px;
  99. background: var(--fb-surface);
  100. backdrop-filter: blur(8px);
  101. overflow: hidden;
  102. min-height: 0;
  103. }
  104. .panel-title {
  105. height: 46px;
  106. display: flex;
  107. align-items: center;
  108. padding: 0 14px;
  109. border-bottom: 1px solid var(--fb-border);
  110. font-size: 14px;
  111. font-weight: 700;
  112. }
  113. .hint {
  114. padding: 10px 14px;
  115. font-size: 12px;
  116. color: var(--fb-subtext);
  117. }
  118. .tree,
  119. .results {
  120. height: calc(100% - 78px);
  121. overflow: auto;
  122. padding: 0 8px 10px;
  123. }
  124. .tree ul {
  125. list-style: none;
  126. margin: 0;
  127. padding: 0 0 0 14px;
  128. }
  129. .tree-row {
  130. display: flex;
  131. align-items: center;
  132. gap: 8px;
  133. height: 30px;
  134. border-radius: 8px;
  135. padding: 0 8px;
  136. cursor: pointer;
  137. }
  138. .tree-row:hover { background: color-mix(in srgb, var(--fb-accent) 16%, transparent); }
  139. .tree-toggle {
  140. width: 16px;
  141. text-align: center;
  142. color: var(--fb-subtext);
  143. font-size: 11px;
  144. }
  145. .tree-icon { width: 16px; text-align: center; }
  146. .tree-name {
  147. white-space: nowrap;
  148. overflow: hidden;
  149. text-overflow: ellipsis;
  150. }
  151. .result-item {
  152. margin: 8px 8px 0;
  153. padding: 10px 12px;
  154. border-radius: 10px;
  155. border: 1px solid var(--fb-border);
  156. background: color-mix(in srgb, var(--fb-base) 56%, transparent);
  157. }
  158. .result-item a {
  159. color: var(--fb-accent);
  160. text-decoration: none;
  161. }
  162. .result-item a:hover { color: var(--fb-accent-2); text-decoration: underline; }
  163. .result-path {
  164. margin-top: 4px;
  165. font-size: 12px;
  166. color: var(--fb-subtext);
  167. word-break: break-all;
  168. }
  169. @media (max-width: 980px) {
  170. .topbar {
  171. grid-template-columns: 1fr;
  172. height: auto;
  173. }
  174. .layout {
  175. grid-template-columns: 1fr;
  176. height: auto;
  177. }
  178. .left-panel, .right-panel {
  179. min-height: 320px;
  180. }
  181. }