main.css 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508
  1. /* resources/css/main.css */
  2. @import "@tabler/core/dist/css/tabler.min.css";
  3. @import "@tabler/icons-webfont/dist/tabler-icons.min.css";
  4. .book-card {
  5. transition: transform 0.2s;
  6. }
  7. .book-card:hover {
  8. transform: translateY(-2px);
  9. }
  10. .book-cover {
  11. height: 200px;
  12. object-fit: cover;
  13. }
  14. @media (max-width: 768px) {
  15. .book-cover {
  16. height: 150px;
  17. }
  18. }
  19. .nav-overlay {
  20. position: absolute;
  21. }
  22. .hero-section {
  23. height: 250px;
  24. width: 100%;
  25. background-size: cover;
  26. background-position: center;
  27. background-repeat: no-repeat;
  28. position: relative;
  29. display: flex;
  30. align-items: center;
  31. justify-content: center;
  32. }
  33. .hero-overlay {
  34. position: absolute;
  35. top: 0;
  36. left: 0;
  37. right: 0;
  38. bottom: 0;
  39. background: rgba(0, 0, 0, 0.2);
  40. }
  41. .hero-content {
  42. position: relative;
  43. z-index: 2;
  44. text-align: center;
  45. color: white;
  46. max-width: 600px;
  47. padding: 0 1rem;
  48. }
  49. .hero-title {
  50. font-size: 2.5rem;
  51. font-weight: bold;
  52. margin-bottom: 1rem;
  53. text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
  54. }
  55. .hero-subtitle {
  56. font-size: 1.2rem;
  57. margin-bottom: 2rem;
  58. text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  59. }
  60. .search-box {
  61. background: white;
  62. border-radius: 0.5rem;
  63. padding: 0.5rem;
  64. box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  65. max-width: 500px;
  66. margin: 0 auto;
  67. }
  68. .feature-card {
  69. transition: transform 0.3s ease, box-shadow 0.3s ease;
  70. height: 100%;
  71. }
  72. .feature-card:hover {
  73. transform: translateY(-5px);
  74. box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
  75. }
  76. .stats-section {
  77. background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  78. color: white;
  79. }
  80. .stat-item {
  81. text-align: center;
  82. padding: 2rem 1rem;
  83. }
  84. .stat-number {
  85. font-size: 2.5rem;
  86. font-weight: bold;
  87. display: block;
  88. }
  89. .stat-label {
  90. font-size: 1rem;
  91. opacity: 0.9;
  92. margin-top: 0.5rem;
  93. }
  94. /* Navigation Styles */
  95. .top-nav {
  96. height: 50px;
  97. width: 100%;
  98. display: flex;
  99. justify-content: flex-end;
  100. align-items: center;
  101. padding: 0 2rem;
  102. position: relative;
  103. z-index: 10;
  104. }
  105. .nav-menu {
  106. display: flex;
  107. align-items: center;
  108. gap: 1.5rem;
  109. list-style: none;
  110. margin: 0;
  111. padding: 0;
  112. }
  113. .nav-item a {
  114. color: white;
  115. text-decoration: none;
  116. font-size: 0.95rem;
  117. font-weight: 500;
  118. transition: opacity 0.2s;
  119. white-space: nowrap;
  120. }
  121. .nav-item a:hover {
  122. opacity: 0.8;
  123. }
  124. /* Hamburger Menu */
  125. .hamburger-btn {
  126. display: none;
  127. background: rgba(255, 255, 255, 0.2);
  128. border: 2px solid white;
  129. border-radius: 0.375rem;
  130. color: white;
  131. font-size: 1.5rem;
  132. cursor: pointer;
  133. padding: 0.5rem 0.75rem;
  134. z-index: 1001;
  135. transition: background 0.2s;
  136. width: 44px;
  137. height: 44px;
  138. align-items: center;
  139. justify-content: center;
  140. }
  141. .hamburger-btn:hover {
  142. background: rgba(255, 255, 255, 0.3);
  143. }
  144. /* CSS Hamburger Icon */
  145. .hamburger-icon {
  146. display: flex;
  147. flex-direction: column;
  148. gap: 4px;
  149. width: 24px;
  150. }
  151. .hamburger-icon span {
  152. display: block;
  153. height: 2px;
  154. background: white;
  155. border-radius: 2px;
  156. transition: all 0.3s;
  157. }
  158. .hamburger-btn.active .hamburger-icon span:nth-child(1) {
  159. transform: translateY(6px) rotate(45deg);
  160. }
  161. .hamburger-btn.active .hamburger-icon span:nth-child(2) {
  162. opacity: 0;
  163. }
  164. .hamburger-btn.active .hamburger-icon span:nth-child(3) {
  165. transform: translateY(-6px) rotate(-45deg);
  166. }
  167. .mobile-menu {
  168. display: none;
  169. position: fixed;
  170. top: 0;
  171. right: -100%;
  172. width: 280px;
  173. height: 100vh;
  174. background: rgba(0, 0, 0, 0.95);
  175. backdrop-filter: blur(10px);
  176. transition: right 0.3s ease;
  177. z-index: 1000;
  178. padding-top: 60px;
  179. }
  180. .mobile-menu.active {
  181. right: 0;
  182. }
  183. .mobile-nav-menu {
  184. list-style: none;
  185. padding: 0;
  186. margin: 0;
  187. }
  188. .mobile-nav-item {
  189. border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  190. }
  191. .mobile-nav-item a {
  192. display: block;
  193. color: white;
  194. text-decoration: none;
  195. padding: 1rem 2rem;
  196. font-size: 1rem;
  197. transition: background 0.2s;
  198. }
  199. .mobile-nav-item a:hover {
  200. background: rgba(255, 255, 255, 0.1);
  201. }
  202. .mobile-overlay {
  203. display: none;
  204. position: fixed;
  205. top: 0;
  206. left: 0;
  207. width: 100%;
  208. height: 100%;
  209. background: rgba(0, 0, 0, 0.5);
  210. z-index: 999;
  211. }
  212. .mobile-overlay.active {
  213. display: block;
  214. }
  215. /* Responsive */
  216. @media (max-width: 768px) {
  217. .hero-title {
  218. font-size: 2rem;
  219. }
  220. .hero-subtitle {
  221. font-size: 1rem;
  222. }
  223. .hero-section {
  224. height: 250px;
  225. }
  226. .stat-number {
  227. font-size: 2rem;
  228. }
  229. .top-nav {
  230. padding: 0 1rem;
  231. }
  232. .nav-menu {
  233. display: none;
  234. }
  235. .hamburger-btn {
  236. display: flex;
  237. }
  238. .mobile-menu {
  239. display: block;
  240. }
  241. }
  242. @media (max-width: 576px) {
  243. .hero-title {
  244. font-size: 1.5rem;
  245. }
  246. .hero-subtitle {
  247. font-size: 0.9rem;
  248. }
  249. .top-nav {
  250. padding: 0 0.5rem;
  251. }
  252. }
  253. :root {
  254. --sf: #c8860a;
  255. --sf-light: #f5e6c8;
  256. --sf-pale: #fdf8f0;
  257. --ink: #1a1208;
  258. --ink-soft: #4a3f2f;
  259. --ink-muted: #8a7a68;
  260. --bdr: #e8ddd0;
  261. --card-bg: #fffdf9;
  262. }
  263. /* Breadcrumb bar */
  264. .anthology-breadcrumb-bar {
  265. background: rgba(255, 255, 255, 0.55);
  266. border-bottom: 1px solid var(--bdr);
  267. padding: 0.5rem 0;
  268. }
  269. .anthology-breadcrumb-bar .bc-inner {
  270. display: flex;
  271. align-items: center;
  272. justify-content: space-between;
  273. gap: 1rem;
  274. }
  275. .anthology-breadcrumb-bar .breadcrumb {
  276. margin: 0;
  277. font-size: 0.78rem;
  278. flex-shrink: 0;
  279. }
  280. .anthology-breadcrumb-bar .breadcrumb-item a {
  281. color: var(--sf);
  282. text-decoration: none;
  283. }
  284. .anthology-breadcrumb-bar .breadcrumb-item.active {
  285. color: var(--ink-muted);
  286. }
  287. .anthology-breadcrumb-bar .breadcrumb-item + .breadcrumb-item::before {
  288. color: var(--ink-muted);
  289. }
  290. .hero-wrapper {
  291. position: relative;
  292. }
  293. .hero-wrapper:has(.hero-section) .anthology-breadcrumb-bar {
  294. position: absolute;
  295. top: 0;
  296. left: 0;
  297. right: 0;
  298. z-index: 10;
  299. background: transparent;
  300. border-bottom: none;
  301. }
  302. .hero-wrapper:has(.hero-section) .bc-nav li a {
  303. color: white;
  304. }
  305. .hero-wrapper:has(.hero-section) .bc-nav li a:hover {
  306. color: rgba(255, 255, 255, 0.75);
  307. }
  308. .hero-wrapper:has(.hero-section) .bc-hamburger {
  309. border-color: rgba(255, 255, 255, 0.6);
  310. color: white;
  311. }
  312. /* Top nav inside breadcrumb bar */
  313. .bc-nav {
  314. display: flex;
  315. align-items: center;
  316. gap: 1.25rem;
  317. list-style: none;
  318. margin: 0;
  319. padding: 0;
  320. flex-shrink: 0;
  321. }
  322. .bc-nav li a {
  323. font-size: 0.82rem;
  324. color: var(--ink-soft);
  325. text-decoration: none;
  326. white-space: nowrap;
  327. transition: color 0.15s;
  328. }
  329. .bc-nav li a:hover {
  330. color: var(--sf);
  331. }
  332. .bc-nav li a.active {
  333. color: var(--sf);
  334. font-weight: 600;
  335. }
  336. /* Mobile nav: hamburger */
  337. .bc-hamburger {
  338. display: none;
  339. background: none;
  340. border: 1px solid var(--bdr);
  341. border-radius: 5px;
  342. padding: 4px 8px;
  343. cursor: pointer;
  344. color: var(--ink-soft);
  345. line-height: 1;
  346. }
  347. .bc-hamburger:hover {
  348. border-color: var(--sf);
  349. color: var(--sf);
  350. }
  351. /* Mobile drawer */
  352. .bc-mobile-overlay {
  353. display: none;
  354. position: fixed;
  355. inset: 0;
  356. background: rgba(0, 0, 0, 0.4);
  357. z-index: 1040;
  358. }
  359. .bc-mobile-overlay.open {
  360. display: block;
  361. }
  362. .bc-mobile-drawer {
  363. position: fixed;
  364. top: 0;
  365. right: -100%;
  366. width: 240px;
  367. height: 100vh;
  368. background: var(--card-bg);
  369. border-left: 1px solid var(--bdr);
  370. z-index: 1050;
  371. transition: right 0.25s ease;
  372. padding: 1rem 0;
  373. box-shadow: -4px 0 20px rgba(0, 0, 0, 0.1);
  374. }
  375. .bc-mobile-drawer.open {
  376. right: 0;
  377. }
  378. .bc-mobile-drawer-header {
  379. display: flex;
  380. align-items: center;
  381. justify-content: space-between;
  382. padding: 0.5rem 1.25rem 0.75rem;
  383. border-bottom: 1px solid var(--bdr);
  384. margin-bottom: 0.5rem;
  385. }
  386. .bc-mobile-drawer-header span {
  387. font-size: 0.85rem;
  388. font-weight: 600;
  389. color: var(--ink-soft);
  390. }
  391. .bc-mobile-drawer-close {
  392. background: none;
  393. border: none;
  394. cursor: pointer;
  395. color: var(--ink-muted);
  396. font-size: 1rem;
  397. line-height: 1;
  398. padding: 2px;
  399. }
  400. .bc-mobile-nav {
  401. list-style: none;
  402. padding: 0;
  403. margin: 0;
  404. }
  405. .bc-mobile-nav li a {
  406. display: block;
  407. padding: 0.65rem 1.25rem;
  408. font-size: 0.9rem;
  409. color: var(--ink-soft);
  410. text-decoration: none;
  411. border-bottom: 1px solid rgba(232, 221, 208, 0.5);
  412. transition: background 0.15s;
  413. }
  414. .bc-mobile-nav li a:hover {
  415. background: var(--sf-pale);
  416. color: var(--sf);
  417. }
  418. .bc-mobile-nav li a.active {
  419. color: var(--sf);
  420. font-weight: 600;
  421. }
  422. @media (max-width: 640px) {
  423. .bc-nav {
  424. display: none;
  425. }
  426. .bc-hamburger {
  427. display: inline-flex;
  428. align-items: center;
  429. }
  430. }