style.css 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. /* Reset and Base Styles */
  2. :root {
  3. --brand-red: #b0001d;
  4. --brand-red-dark: #8f0017;
  5. --brand-dark: #1b1b1b;
  6. --brand-text: #222;
  7. --brand-muted: #6c757d;
  8. --brand-surface: #ffffff;
  9. --brand-bg: #f4f4f4;
  10. --brand-border: #e5e5e5;
  11. }
  12. * {
  13. margin: 0;
  14. padding: 0;
  15. box-sizing: border-box;
  16. }
  17. body {
  18. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
  19. line-height: 1.6;
  20. color: var(--brand-text);
  21. background-color: var(--brand-bg);
  22. }
  23. .container {
  24. max-width: 1200px;
  25. margin: 0 auto;
  26. padding: 0 20px;
  27. }
  28. /* Header */
  29. .site-header {
  30. background-color: var(--brand-red);
  31. color: white;
  32. padding: 0.9rem 0;
  33. box-shadow: 0 2px 6px rgba(0,0,0,0.18);
  34. }
  35. .header-inner {
  36. display: flex;
  37. align-items: center;
  38. justify-content: space-between;
  39. gap: 2rem;
  40. }
  41. .brand {
  42. display: flex;
  43. align-items: center;
  44. gap: 1rem;
  45. color: white;
  46. text-decoration: none;
  47. }
  48. .brand-logo {
  49. height: 52px;
  50. width: auto;
  51. display: block;
  52. filter: drop-shadow(0 1px 2px rgba(0,0,0,0.25));
  53. }
  54. .brand-text {
  55. display: flex;
  56. flex-direction: column;
  57. line-height: 1.1;
  58. }
  59. .brand-title {
  60. font-size: 1.3rem;
  61. font-weight: 700;
  62. letter-spacing: 0.02em;
  63. }
  64. .brand-subtitle {
  65. font-size: 0.9rem;
  66. font-weight: 500;
  67. opacity: 0.9;
  68. }
  69. .site-nav {
  70. display: flex;
  71. align-items: center;
  72. gap: 1.5rem;
  73. }
  74. .site-nav a {
  75. color: white;
  76. text-decoration: none;
  77. font-weight: 600;
  78. letter-spacing: 0.02em;
  79. }
  80. .site-nav a:hover {
  81. text-decoration: underline;
  82. }
  83. /* Main Content */
  84. main {
  85. min-height: calc(100vh - 200px);
  86. padding: 2rem 0;
  87. }
  88. /* Buttons */
  89. .btn {
  90. display: inline-block;
  91. padding: 0.75rem 1.5rem;
  92. background-color: var(--brand-red);
  93. color: white;
  94. text-decoration: none;
  95. border: none;
  96. border-radius: 4px;
  97. cursor: pointer;
  98. font-size: 1rem;
  99. font-weight: 500;
  100. transition: background-color 0.3s;
  101. }
  102. .btn:hover {
  103. background-color: var(--brand-red-dark);
  104. }
  105. .btn-secondary {
  106. background-color: #6c757d;
  107. }
  108. .btn-secondary:hover {
  109. background-color: #5a6268;
  110. }
  111. .btn-small {
  112. padding: 0.5rem 1rem;
  113. font-size: 0.9rem;
  114. }
  115. /* Product Grid */
  116. .products-grid {
  117. display: grid;
  118. grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  119. gap: 2rem;
  120. margin-top: 2rem;
  121. }
  122. .product-card {
  123. background: var(--brand-surface);
  124. border-radius: 8px;
  125. overflow: hidden;
  126. box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  127. transition: transform 0.3s, box-shadow 0.3s;
  128. }
  129. .product-card:hover {
  130. transform: translateY(-5px);
  131. box-shadow: 0 4px 12px rgba(0,0,0,0.15);
  132. }
  133. .product-card img {
  134. width: 100%;
  135. height: 200px;
  136. object-fit: cover;
  137. background-color: var(--brand-border);
  138. }
  139. .product-card-content {
  140. padding: 1.5rem;
  141. }
  142. .product-card h3 {
  143. font-size: 1.2rem;
  144. margin-bottom: 0.5rem;
  145. color: var(--brand-red);
  146. }
  147. .product-card .price {
  148. font-size: 1.5rem;
  149. font-weight: bold;
  150. color: var(--brand-text);
  151. margin: 0.5rem 0;
  152. }
  153. .product-card .stock {
  154. font-size: 0.9rem;
  155. color: var(--brand-muted);
  156. margin-bottom: 1rem;
  157. }
  158. .product-card .stock.in-stock {
  159. color: #28a745;
  160. }
  161. .product-card .stock.out-of-stock {
  162. color: #dc3545;
  163. }
  164. /* Forms */
  165. .form-group {
  166. margin-bottom: 1.5rem;
  167. }
  168. .form-group label {
  169. display: block;
  170. margin-bottom: 0.5rem;
  171. font-weight: 500;
  172. }
  173. .form-group input,
  174. .form-group textarea,
  175. .form-group select {
  176. width: 100%;
  177. padding: 0.75rem;
  178. border: 1px solid var(--brand-border);
  179. border-radius: 4px;
  180. font-size: 1rem;
  181. font-family: inherit;
  182. }
  183. .form-group input:focus,
  184. .form-group textarea:focus,
  185. .form-group select:focus {
  186. outline: none;
  187. border-color: var(--brand-red);
  188. box-shadow: 0 0 0 3px rgba(176, 0, 29, 0.15);
  189. }
  190. /* Cart */
  191. .cart-item {
  192. background: var(--brand-surface);
  193. padding: 1.5rem;
  194. margin-bottom: 1rem;
  195. border-radius: 8px;
  196. box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  197. display: flex;
  198. justify-content: space-between;
  199. align-items: center;
  200. }
  201. .cart-item-info {
  202. flex: 1;
  203. }
  204. .cart-item-actions {
  205. display: flex;
  206. align-items: center;
  207. gap: 1rem;
  208. }
  209. .quantity-input {
  210. width: 60px;
  211. padding: 0.5rem;
  212. text-align: center;
  213. }
  214. /* Tables */
  215. table {
  216. width: 100%;
  217. background: var(--brand-surface);
  218. border-collapse: collapse;
  219. box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  220. border-radius: 8px;
  221. overflow: hidden;
  222. }
  223. table th {
  224. background-color: var(--brand-red);
  225. color: white;
  226. padding: 1rem;
  227. text-align: left;
  228. font-weight: 600;
  229. }
  230. table td {
  231. padding: 1rem;
  232. border-top: 1px solid var(--brand-border);
  233. }
  234. table tr:hover {
  235. background-color: #f8f9fa;
  236. }
  237. /* Alerts */
  238. .alert {
  239. padding: 1rem;
  240. border-radius: 4px;
  241. margin-bottom: 1.5rem;
  242. }
  243. .alert-success {
  244. background-color: #d4edda;
  245. color: #155724;
  246. border: 1px solid #c3e6cb;
  247. }
  248. .alert-error {
  249. background-color: #f8d7da;
  250. color: #721c24;
  251. border: 1px solid #f5c6cb;
  252. }
  253. .alert-info {
  254. background-color: #d1ecf1;
  255. color: #0c5460;
  256. border: 1px solid #bee5eb;
  257. }
  258. .alert-warning {
  259. background-color: #fff3cd;
  260. color: #856404;
  261. border: 1px solid #ffeeba;
  262. }
  263. /* Footer */
  264. footer {
  265. background-color: var(--brand-dark);
  266. color: white;
  267. text-align: center;
  268. padding: 2rem 0;
  269. margin-top: 3rem;
  270. }
  271. /* Reservation Code */
  272. .reservation-code {
  273. background: #fff3cd;
  274. border: 2px solid #ffc107;
  275. padding: 2rem;
  276. border-radius: 8px;
  277. text-align: center;
  278. margin: 2rem 0;
  279. }
  280. .reservation-code h2 {
  281. font-size: 2rem;
  282. color: #856404;
  283. letter-spacing: 0.2rem;
  284. font-family: 'Courier New', monospace;
  285. }
  286. /* Admin Styles */
  287. .admin-header {
  288. display: flex;
  289. justify-content: space-between;
  290. align-items: center;
  291. margin-bottom: 2rem;
  292. }
  293. .admin-stats {
  294. display: grid;
  295. grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  296. gap: 1.5rem;
  297. margin-bottom: 2rem;
  298. }
  299. .stat-card {
  300. background: var(--brand-surface);
  301. padding: 1.5rem;
  302. border-radius: 8px;
  303. box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  304. }
  305. .stat-card h3 {
  306. font-size: 0.9rem;
  307. color: var(--brand-muted);
  308. margin-bottom: 0.5rem;
  309. }
  310. .stat-card .stat-value {
  311. font-size: 2rem;
  312. font-weight: bold;
  313. color: var(--brand-red);
  314. }
  315. /* Product Detail Grid */
  316. .product-detail-grid {
  317. display: grid;
  318. grid-template-columns: 1fr 1fr;
  319. gap: 2rem;
  320. margin-top: 2rem;
  321. }
  322. /* Responsive */
  323. @media (max-width: 768px) {
  324. .header-inner {
  325. flex-direction: column;
  326. align-items: flex-start;
  327. }
  328. .site-nav {
  329. flex-wrap: wrap;
  330. gap: 1rem;
  331. }
  332. .brand-logo {
  333. height: 46px;
  334. }
  335. .products-grid {
  336. grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  337. gap: 1rem;
  338. }
  339. .product-detail-grid {
  340. grid-template-columns: 1fr;
  341. gap: 1.5rem;
  342. }
  343. .cart-item {
  344. flex-direction: column;
  345. align-items: flex-start;
  346. }
  347. .cart-item-actions {
  348. width: 100%;
  349. justify-content: space-between;
  350. margin-top: 1rem;
  351. }
  352. table {
  353. font-size: 0.9rem;
  354. }
  355. table th,
  356. table td {
  357. padding: 0.5rem;
  358. }
  359. .admin-stats {
  360. grid-template-columns: 1fr;
  361. }
  362. }
  363. /* Utility Classes */
  364. .text-center {
  365. text-align: center;
  366. }
  367. .mt-1 { margin-top: 0.5rem; }
  368. .mt-2 { margin-top: 1rem; }
  369. .mt-3 { margin-top: 1.5rem; }
  370. .mb-1 { margin-bottom: 0.5rem; }
  371. .mb-2 { margin-bottom: 1rem; }
  372. .mb-3 { margin-bottom: 1.5rem; }