main.css 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. :root {
  2. --bg-main: #ffffff;
  3. --bg-card: #f8f9fa;
  4. --border: #e0e0e0;
  5. --text-primary: #1a1a1a;
  6. --text-secondary: #5f6368;
  7. --text-muted: #757575;
  8. --accent: #202124;
  9. --accent-glow: rgba(0,0,0,0.05);
  10. }
  11. @media (prefers-color-scheme: dark) {
  12. :root {
  13. --bg-main: #121212;
  14. --bg-card: #1e1e1e;
  15. --border: #333333;
  16. --text-primary: #ffffff;
  17. --text-secondary: #a0a0a0;
  18. --text-muted: #d1d1d1;
  19. --accent: #e2e2e2;
  20. --accent-glow: rgba(255,255,255,0.1);
  21. }
  22. }
  23. body {
  24. background-color:var(--bg-main);
  25. color:var(--text-primary);
  26. font-family:system-ui,-apple-system,sans-serif;
  27. margin:0;
  28. padding:0;
  29. }
  30. img[src=""] {
  31. display: none;
  32. }
  33. .view-home {
  34. display: flex;
  35. justify-content: center;
  36. align-items: center;
  37. min-height: 100vh;
  38. padding: 20px;
  39. background: radial-gradient(circle at top right, var(--bg-card) 0%, var(--bg-main) 100%);
  40. }
  41. .view-home .container {
  42. width: 100%;
  43. max-width: 580px;
  44. margin: 0 auto;
  45. text-align: center;
  46. display: flex;
  47. flex-direction: column;
  48. }
  49. .view-home .hero-logo {
  50. font-size:4.5rem;
  51. margin-bottom:30px;
  52. letter-spacing:-3px;
  53. font-weight:800;
  54. }
  55. .view-home .search-input-wrapper {
  56. width: 100%;
  57. margin-bottom: 24px;
  58. }
  59. .view-home .search-box {
  60. font-size:1.1rem;
  61. padding:16px 28px;
  62. box-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06);
  63. }
  64. .view-home .buttons {
  65. display:flex;
  66. gap:12px;
  67. justify-content:center;
  68. }
  69. .view-home button {
  70. padding:10px 24px;
  71. border-radius:8px;
  72. font-weight:600;
  73. font-size:0.9rem;
  74. cursor:pointer;
  75. transition:all 0.2s;
  76. border:1px solid transparent;
  77. }
  78. .view-home .btn-primary {
  79. background:var(--accent);
  80. color:var(--bg-main);
  81. }
  82. .view-home .btn-primary:hover {
  83. filter:brightness(1.1);
  84. transform:translateY(-1px);
  85. }
  86. .view-home .btn-secondary {
  87. background:var(--bg-card);
  88. color:var(--text-primary);
  89. border-color:var(--border);
  90. }
  91. .view-home .btn-secondary:hover {
  92. background:var(--border);
  93. border-color:var(--text-secondary);
  94. }
  95. header {
  96. display:flex;
  97. align-items:center;
  98. gap:20px;
  99. padding:15px 60px;
  100. border-bottom:1px solid var(--border);
  101. background:var(--bg-main);
  102. }
  103. .search-form {
  104. flex-grow:1;
  105. max-width:600px;
  106. }
  107. h1 {
  108. font-size:1.5rem;
  109. margin:0;
  110. letter-spacing:-1px;
  111. white-space:nowrap;
  112. }
  113. h1 span {
  114. color:var(--accent);
  115. }
  116. .search-box {
  117. width: 100%;
  118. padding: 12px 24px;
  119. border-radius: 99px;
  120. border: 1px solid var(--border);
  121. background: var(--bg-card);
  122. color: var(--text-primary);
  123. outline: none;
  124. transition: border-color 0.2s, box-shadow 0.2s;
  125. }
  126. .search-box:focus {
  127. border-color:var(--accent);
  128. box-shadow:0 0 0 4px var(--accent-glow);
  129. }
  130. .nav-tabs {
  131. padding:0 60px;
  132. border-bottom:1px solid var(--border);
  133. background:var(--bg-main);
  134. }
  135. .nav-container {
  136. display:flex;
  137. gap:30px;
  138. max-width:1200px;
  139. }
  140. .nav-tabs a {
  141. padding:14px 0;
  142. color:var(--text-secondary);
  143. text-decoration:none;
  144. font-size:0.9rem;
  145. font-weight:500;
  146. border-bottom:2px solid transparent;
  147. transition:color 0.2s;
  148. }
  149. .nav-tabs a:hover {
  150. color:var(--text-primary);
  151. }
  152. .nav-tabs a.active {
  153. color:var(--accent);
  154. border-bottom-color:var(--accent);
  155. }
  156. .image-results-container {
  157. padding:30px 60px;
  158. }
  159. .image-grid {
  160. display:grid;
  161. grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  162. gap:24px;
  163. max-width:1600px;
  164. margin:0 auto;
  165. }
  166. .image-card {
  167. background:var(--bg-card);
  168. border-radius:12px;
  169. overflow:hidden;
  170. border:1px solid var(--border);
  171. transition:transform 0.2s ease,border-color 0.2s;
  172. }
  173. .image-link {
  174. text-decoration:none;
  175. display:block;
  176. }
  177. .image-card:hover {
  178. transform:translateY(-4px);
  179. border-color:var(--accent);
  180. }
  181. .image-wrapper {
  182. position:relative;
  183. aspect-ratio:4/3;
  184. background:#000;
  185. overflow:hidden;
  186. }
  187. .image-wrapper img {
  188. width:100%;
  189. height:100%;
  190. object-fit:cover;
  191. display:block;
  192. transition:opacity 0.3s;
  193. }
  194. .image-overlay {
  195. position: absolute;
  196. inset: 0;
  197. background: rgba(0, 0, 0, 0.4);
  198. display: flex;
  199. align-items: center;
  200. justify-content: center;
  201. opacity: 0;
  202. transition: opacity 0.2s;
  203. }
  204. .image-card:hover .image-overlay {
  205. opacity:1;
  206. }
  207. .overlay-buttons {
  208. display:flex;
  209. flex-direction:column;
  210. gap:10px;
  211. width:70%;
  212. }
  213. .overlay-btn {
  214. padding:8px 16px;
  215. border-radius:20px;
  216. font-size:0.8rem;
  217. font-weight:700;
  218. text-decoration:none;
  219. text-align:center;
  220. transition:filter 0.2s;
  221. }
  222. .overlay-btn:hover {
  223. filter:brightness(1.1);
  224. }
  225. .overlay-btn.primary {
  226. background:var(--accent);
  227. color:var(--bg-main);
  228. }
  229. .overlay-btn.secondary {
  230. background:rgba(255,255,255,0.1);
  231. color:white;
  232. backdrop-filter:blur(4px);
  233. border:1px solid rgba(255,255,255,0.2);
  234. }
  235. .image-info {
  236. padding:12px;
  237. }
  238. .image-caption {
  239. display:block;
  240. font-size:0.85rem;
  241. color:var(--text-primary);
  242. white-space:nowrap;
  243. overflow:hidden;
  244. text-overflow:ellipsis;
  245. margin-bottom:4px;
  246. }
  247. .image-source {
  248. display:block;
  249. font-size:0.75rem;
  250. color:var(--text-secondary);
  251. white-space:nowrap;
  252. overflow:hidden;
  253. text-overflow:ellipsis;
  254. }
  255. .content-layout {
  256. display:grid;
  257. grid-template-columns:140px minmax(0,700px) 450px;
  258. gap:60px;
  259. padding:30px 60px;
  260. }
  261. .results-container {
  262. grid-column:2;
  263. }
  264. .result {
  265. margin-bottom:32px;
  266. }
  267. .result a {
  268. color:var(--accent);
  269. text-decoration:none;
  270. font-size:1.25rem;
  271. display:inline-block;
  272. margin-bottom:4px;
  273. }
  274. .url {
  275. color:var(--text-secondary);
  276. font-size:0.85rem;
  277. display:block;
  278. margin-bottom:4px;
  279. }
  280. .desc {
  281. color:var(--text-muted);
  282. line-height:1.6;
  283. margin:0;
  284. }
  285. .infobox {
  286. grid-column:3;
  287. background:var(--bg-card);
  288. border:1px solid var(--border);
  289. border-radius:12px;
  290. align-self:start;
  291. margin-bottom: 10px;
  292. }
  293. .infobox-header {
  294. padding:20px;
  295. border-bottom:1px solid var(--border);
  296. }
  297. .infobox-title {
  298. font-size:1.5rem;
  299. font-weight:600;
  300. margin:0;
  301. } .infobox-content {
  302. display: flex;
  303. flex-direction: column;
  304. gap: 12px;
  305. }
  306. .read-more {
  307. color: var(--accent);
  308. font-weight: bold;
  309. text-decoration: none;
  310. font-size: 0.9rem;
  311. align-self: flex-start;
  312. }
  313. .read-more:hover {
  314. text-decoration: underline;
  315. } .infobox-main {
  316. display:flex;
  317. gap:15px;
  318. padding:20px;
  319. }
  320. .infobox-image {
  321. width:120px;
  322. height:120px;
  323. min-width:120px;
  324. border-radius:8px;
  325. border:1px solid var(--border);
  326. object-fit:cover;
  327. }
  328. .infobox-summary {
  329. display: block;
  330. font-size:0.95rem;
  331. line-height:1.5;
  332. color:var(--text-muted);
  333. margin:0;
  334. }
  335. .pagination {
  336. display: flex;
  337. justify-content: center;
  338. align-items: center;
  339. gap: 16px;
  340. margin-top: 40px;
  341. padding-bottom: 40px;
  342. }
  343. .pagination-btn {
  344. background: var(--bg-card);
  345. color: var(--text-primary);
  346. border: 1px solid var(--border);
  347. padding: 8px 16px;
  348. border-radius: 8px;
  349. text-decoration: none;
  350. font-size: 0.9rem;
  351. font-weight: 600;
  352. transition: all 0.2s;
  353. }
  354. .pagination-btn:hover {
  355. background: var(--border);
  356. border-color: var(--text-secondary);
  357. }
  358. .pagination-current {
  359. color: var(--text-secondary);
  360. font-size: 0.9rem;
  361. }
  362. @media (max-width:1200px) {
  363. .content-layout {
  364. grid-template-columns:1fr;
  365. padding:20px 30px;
  366. }
  367. .results-container,.infobox-sidebar {
  368. grid-column:1;
  369. max-width:100%;
  370. }
  371. .infobox-sidebar {
  372. order:-1;
  373. margin-bottom:-80px;
  374. }
  375. .nav-tabs,.image-results-container {
  376. padding:0 30px;
  377. }
  378. header {
  379. padding:15px 30px;
  380. }
  381. }@media (max-width:600px) {
  382. header {
  383. flex-direction:column;
  384. align-items:center;
  385. padding:15px 0px;
  386. }
  387. .search-box {
  388. padding:12px 16px;
  389. width:91vw;
  390. }
  391. .view-home .search-box {
  392. width: 75vw;
  393. }
  394. .view-home {
  395. padding-top: 20vh;
  396. align-items: flex-start;
  397. }
  398. .search-form {
  399. width:100%;
  400. }
  401. .image-grid {
  402. grid-template-columns:repeat(auto-fill,minmax(160px,1fr));
  403. gap:12px;
  404. }
  405. .image-results-container {
  406. padding:20px;
  407. }
  408. .view-home .hero-logo {
  409. font-size:3rem;
  410. }
  411. }