/*
 * This is a manifest file that'll be compiled into application.css.
 *
 * With Propshaft, assets are served efficiently without preprocessing steps. You can still include
 * application-wide styles in this file, but keep in mind that CSS precedence will follow the standard
 * cascading order, meaning styles declared later in the document or manifest will override earlier ones,
 * depending on specificity.
 *
 * Consider organizing styles into separate files for maintainability.
 */

/* RepeatEats Design System - Brand colors and components */

/* Brand Colors - Green Theme */
:root {
  --brand-50: #f0fdf4;
  --brand-100: #dcfce7;
  --brand-200: #bbf7d0;
  --brand-300: #86efac;
  --brand-400: #4ade80;
  --brand-500: #22c55e;
  --brand-600: #16a34a;
  --brand-700: #15803d;
  --brand-800: #166534;
  --brand-900: #14532d;
}

/* Gradient Backgrounds */
.gradient-bg {
  background: linear-gradient(135deg, #22c55e 0%, #16a34a 50%, #3b82f6 100%);
}

.bg-gradient-primary {
  background: linear-gradient(135deg, #22c55e 0%, #16a34a 50%, #3b82f6 100%);
}

/* Gradient Text */
.gradient-text {
  background: linear-gradient(135deg, #22c55e, #3b82f6);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  color: transparent;
}

.text-gradient {
  background: linear-gradient(135deg, #22c55e, #3b82f6);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  color: transparent;
}

/* Glass Effect */
.glass {
  background: rgba(255, 255, 255, 0.25);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.18);
}

/* Brand Color Classes */
.bg-brand-50 { background-color: var(--brand-50); }
.bg-brand-100 { background-color: var(--brand-100); }
.bg-brand-200 { background-color: var(--brand-200); }
.bg-brand-300 { background-color: var(--brand-300); }
.bg-brand-400 { background-color: var(--brand-400); }
.bg-brand-500 { background-color: var(--brand-500); }
.bg-brand-600 { background-color: var(--brand-600); }
.bg-brand-700 { background-color: var(--brand-700); }
.bg-brand-800 { background-color: var(--brand-800); }
.bg-brand-900 { background-color: var(--brand-900); }

.text-brand-50 { color: var(--brand-50); }
.text-brand-100 { color: var(--brand-100); }
.text-brand-200 { color: var(--brand-200); }
.text-brand-300 { color: var(--brand-300); }
.text-brand-400 { color: var(--brand-400); }
.text-brand-500 { color: var(--brand-500); }
.text-brand-600 { color: var(--brand-600); }
.text-brand-700 { color: var(--brand-700); }
.text-brand-800 { color: var(--brand-800); }
.text-brand-900 { color: var(--brand-900); }

.border-brand-200 { border-color: var(--brand-200); }
.border-brand-500 { border-color: var(--brand-500); }

/* Animations */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes slideUp {
  from { transform: translateY(10px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}

@keyframes bounceGentle {
  0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
  40% { transform: translateY(-5px); }
  60% { transform: translateY(-3px); }
}

.animate-fade-in { animation: fadeIn 0.5s ease-in-out; }
.animate-slide-up { animation: slideUp 0.3s ease-out; }
.animate-bounce-gentle { animation: bounceGentle 2s infinite; }

/* Hover Effects */
.hover\:bg-brand-600:hover { background-color: var(--brand-600); }
.hover\:bg-brand-700:hover { background-color: var(--brand-700); }
.hover\:text-brand-600:hover { color: var(--brand-600); }
.hover\:text-brand-700:hover { color: var(--brand-700); }
.hover\:scale-\[1\.02\]:hover { transform: scale(1.02); }

.group:hover .group-hover\:scale-105 { transform: scale(1.05); }

/* Focus States */
.focus\:ring-brand-500:focus { 
  box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.1); 
}

/* Component Styles */
.btn {
  cursor: pointer;
  border: none;
  border-radius: 0.75rem;
  padding: 0.75rem 1rem;
  font-weight: 600;
  transition: all 0.15s ease-in-out;
  text-align: center;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}

.btn-primary {
  background-color: var(--brand-500);
  color: white;
}

.btn-primary:hover {
  background-color: var(--brand-600);
}

.btn-secondary {
  background-color: white;
  color: var(--brand-600);
  border: 1px solid var(--brand-200);
}

.btn-secondary:hover {
  background-color: var(--brand-50);
}

/* Card Styles */
.card {
  background-color: white;
  border-radius: 1rem;
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  transition: box-shadow 0.15s ease-in-out;
}

.card:hover {
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
}

.card-body {
  padding: 1.5rem;
}

/* Restaurant Card */
.restaurant-card {
  background-color: white;
  border-radius: 1rem;
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  overflow: hidden;
  transition: all 0.3s ease-in-out;
}

.restaurant-card:hover {
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  transform: translateY(-2px);
}

/* Form Styles */
.form-input {
  appearance: none;
  background-color: white;
  border: 1px solid #d1d5db;
  border-radius: 0.75rem;
  padding: 0.75rem 1rem;
  font-size: 1rem;
  line-height: 1.5;
  width: 100%;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.form-input:focus {
  outline: none;
  border-color: var(--brand-500);
  box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.1);
}

.form-select {
  appearance: none;
  background-color: white;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
  background-position: right 0.5rem center;
  background-repeat: no-repeat;
  background-size: 1.5em 1.5em;
  border: 1px solid #d1d5db;
  border-radius: 0.75rem;
  padding: 0.75rem 1rem;
  padding-right: 2.5rem;
  font-size: 1rem;
  line-height: 1.5;
  width: 100%;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.form-select:focus {
  outline: none;
  border-color: var(--brand-500);
  box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.1);
}

/* Flash Messages */
.flash {
  padding: 1rem 1.5rem;
  border-radius: 0.5rem;
  margin-bottom: 1rem;
}

.flash-notice {
  background-color: var(--brand-50);
  color: var(--brand-800);
  border: 1px solid var(--brand-200);
}

.flash-alert {
  background-color: #fef2f2;
  color: #991b1b;
  border: 1px solid #fecaca;
}

/* Opacity Utilities */
.white\/20 { color: rgba(255, 255, 255, 0.2); }
.white\/80 { color: rgba(255, 255, 255, 0.8); }
.white\/90 { color: rgba(255, 255, 255, 0.9); }
.bg-white\/20 { background-color: rgba(255, 255, 255, 0.2); }
.bg-white\/25 { background-color: rgba(255, 255, 255, 0.25); }
.bg-white\/90 { background-color: rgba(255, 255, 255, 0.9); }
.bg-black\/10 { background-color: rgba(0, 0, 0, 0.1); }
.bg-black\/40 { background-color: rgba(0, 0, 0, 0.4); }

/* Pagination Styles - Theme Adapted */
.pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.pagination a,
.pagination span {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 1rem;
  text-decoration: none;
  border-radius: 0.5rem;
  font-weight: 500;
  transition: all 0.15s ease-in-out;
  min-width: 2.5rem;
  height: 2.5rem;
  font-family: 'Jost', sans-serif;
}

.pagination a {
  background-color: #0F2727;
  color: white;
  border: 1px solid rgba(255, 255, 255, 0.2);
}

.pagination a:hover {
  background-color: #DF3F01;
  border-color: #DF3F01;
  transform: scale(1.02);
}

.pagination .current {
  background-color: #DF3F01;
  color: white;
  border: 1px solid #DF3F01;
}

.pagination .disabled {
  background-color: #0F2727;
  color: rgba(255, 255, 255, 0.4);
  border: 1px solid rgba(255, 255, 255, 0.1);
  cursor: not-allowed;
}

.pagination .gap {
  background: none;
  border: none;
  color: rgba(255, 255, 255, 0.6);
}
