main.css 11 KB

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