:root { --primary:#2b6cb0; --bg:#f7fafc; --card:#ffffff; --muted:#718096;}
*{box-sizing:border-box} body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:#1a202c}
.container{max-width:1100px;margin:0 auto;padding:1rem}
.navbar{background:#fff;border-bottom:1px solid #e2e8f0;position:sticky;top:0;z-index:10}
.navbar .container{display:flex;align-items:center;justify-content:space-between}
.logo{font-weight:800;text-decoration:none;color:var(--primary)}
.nav-menu{display:flex;gap:1rem;list-style:none;padding:0;margin:0}
.nav-link{text-decoration:none;color:#2d3748;padding:.5rem .75rem;border-radius:.5rem}
.nav-link:hover{background:#edf2f7}
.hero{padding:2rem 0;display:grid;gap:.75rem}
.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.card{background:var(--card);border:1px solid #edf2f7;border-radius:1rem;overflow:hidden;display:flex;flex-direction:column}
.card img{width:100%;height:160px;object-fit:cover}
.card .p{padding:1rem;display:flex;flex-direction:column;gap:.5rem}
.badge{display:inline-block;font-size:.75rem;color:#fff;background:var(--primary);padding:.2rem .5rem;border-radius:.5rem}
.badge.muted{background:#4a5568}
.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.muted{color:var(--muted);font-size:.9rem}
.btn{background:var(--primary);color:#fff;text-decoration:none;padding:.6rem .9rem;border-radius:.6rem;display:inline-block}
.btn.secondary{background:#4a5568}
.btn-primary{background:var(--primary);color:#fff;border:none;cursor:pointer;font-size:1rem}
.btn-secondary{background:#4a5568;color:#fff;border:none;cursor:pointer;font-size:1rem}
.btn:disabled{opacity:0.6;cursor:not-allowed}
label{font-weight:600}
input,select{padding:.6rem .7rem;width:100%;border:1px solid #e2e8f0;border-radius:.6rem}
fieldset{border:1px solid #e2e8f0;border-radius:.8rem;padding:1rem}
.progress-wrap{background:#edf2f7;border-radius:.6rem;height:10px;overflow:hidden}
.progress{height:100%;background:var(--primary);width:0%}
.footer{color:#718096;padding:2rem 0}
.alert{padding:.75rem 1rem;background:#fff3cd;border:1px solid #ffeeba;color:#856404;border-radius:.6rem}
.success{padding:.75rem 1rem;background:#d4edda;border:1px solid #c3e6cb;color:#155724;border-radius:.6rem}
.loading{padding:2rem;text-align:center;color:var(--muted)}
.logo {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 800;
  text-decoration: none;
  color: var(--primary);
}

.logo-icon {
  font-size: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  background: var(--primary);
  color: white;
  border-radius: 50%;
}

/* Event Detail Page Styles */
.event-detail {
  max-width: 800px;
  margin: 0 auto;
}

.event-header {
  margin-bottom: 2rem;
}

.event-header h1 {
  margin-bottom: 1rem;
}

.event-meta {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.event-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  margin-bottom: 3rem;
}

.event-image img {
  width: 100%;
  height: 300px;
  object-fit: cover;
  border-radius: 1rem;
}

.event-info {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.info-section h3 {
  margin-bottom: 0.5rem;
  color: var(--primary);
}

.info-section p {
  margin: 0.25rem 0;
}

.short-desc {
  font-style: italic;
  color: var(--muted);
}

.action-buttons {
  display: flex;
  gap: 1rem;
  margin-top: 1rem;
}

.registrations-section {
  border-top: 1px solid #e2e8f0;
  padding-top: 2rem;
}

.registrations-list {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin-top: 1rem;
}

.registration-item {
  background: var(--card);
  border: 1px solid #e2e8f0;
  border-radius: 0.5rem;
  padding: 1rem;
}

.reg-info {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.5rem;
}

.reg-date {
  color: var(--muted);
  font-size: 0.9rem;
}

.reg-details {
  display: flex;
  gap: 1rem;
  color: var(--muted);
  font-size: 0.9rem;
}

/* Registration Page Styles */
.registration-page {
  max-width: 800px;
  margin: 0 auto;
}

.event-summary {
  margin-bottom: 2rem;
}

.event-card {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 1rem;
  background: var(--card);
  border: 1px solid #e2e8f0;
  border-radius: 1rem;
  padding: 1rem;
}

.event-card img {
  width: 100%;
  height: 120px;
  object-fit: cover;
  border-radius: 0.5rem;
}

.event-details h3 {
  margin-bottom: 0.5rem;
  color: var(--primary);
}

.event-details p {
  margin: 0.25rem 0;
  font-size: 0.9rem;
}

.registration-form {
  background: var(--card);
  border: 1px solid #e2e8f0;
  border-radius: 1rem;
  padding: 2rem;
}

.registration-form h2 {
  margin-bottom: 1.5rem;
  color: var(--primary);
}

.form-group {
  margin-bottom: 1rem;
}

.form-group label {
  display: block;
  margin-bottom: 0.5rem;
}

.form-group input {
  padding: 0.75rem;
  border: 1px solid #e2e8f0;
  border-radius: 0.5rem;
  font-size: 1rem;
}

.form-group input.ng-invalid.ng-touched {
  border-color: #e53e3e;
}

.error {
  color: #e53e3e;
  font-size: 0.875rem;
  margin-top: 0.25rem;
  display: block;
}

.cost-summary {
  background: #f7fafc;
  border: 1px solid #e2e8f0;
  border-radius: 0.5rem;
  padding: 1rem;
  margin: 1rem 0;
}

.cost-summary h3 {
  margin-bottom: 0.5rem;
  color: var(--primary);
}

.form-actions {
  display: flex;
  gap: 1rem;
  margin-top: 2rem;
}

/* Search Page Styles */
.search-header {
  margin-bottom: 2rem;
}

.search-filters {
  background: var(--card);
  border: 1px solid #e2e8f0;
  border-radius: 1rem;
  padding: 2rem;
  margin-bottom: 2rem;
}

.filter-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-bottom: 1rem;
}

.filter-group {
  display: flex;
  flex-direction: column;
}

.filter-group label {
  margin-bottom: 0.5rem;
  font-weight: 600;
}

.filter-actions {
  display: flex;
  gap: 1rem;
  margin-top: 1rem;
}

.search-results h2 {
  margin-bottom: 1rem;
  color: var(--primary);
}

.no-results {
  text-align: center;
  padding: 3rem;
  color: var(--muted);
}

/* Enhanced Styles for Improved Pages */

/* Hero Section */
.hero-actions {
  display: flex;
  gap: 1rem;
  margin-top: 1.5rem;
}

.section-header {
  margin-bottom: 2rem;
}

/* Enhanced Card Styles */
.event-card {
  background: var(--card);
  border: 1px solid #e2e8f0;
  border-radius: 1rem;
  overflow: hidden;
  transition: all 0.3s ease;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.event-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 25px rgba(0,0,0,0.15);
}

.card-image {
  position: relative;
  overflow: hidden;
}

.card-image img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  transition: transform 0.3s ease;
}

.event-card:hover .card-image img {
  transform: scale(1.05);
}

.card-badges {
  position: absolute;
  top: 1rem;
  right: 1rem;
  display: flex;
  gap: 0.5rem;
}

.badge-upcoming {
  background: #28a745;
}

.badge-past {
  background: #6c757d;
}

.card-content {
  padding: 1.5rem;
}

.card-title {
  margin: 0 0 0.75rem 0;
  font-size: 1.25rem;
  font-weight: 600;
  color: #1a202c;
}

.card-meta {
  display: flex;
  gap: 1rem;
  margin-bottom: 0.75rem;
  font-size: 0.9rem;
  color: var(--muted);
}

.card-datetime {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 1rem;
  font-size: 0.9rem;
  color: var(--muted);
}

.card-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.price-info .price {
  font-weight: 600;
  color: var(--primary);
}

.price-info .price.free {
  color: #28a745;
}

/* Loading Spinner */
.loading-spinner {
  width: 40px;
  height: 40px;
  border: 4px solid #f3f3f3;
  border-top: 4px solid var(--primary);
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin: 0 auto 1rem;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* Enhanced Registration Styles */
.registration-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  margin-top: 2rem;
}

.page-header {
  text-align: center;
  margin-bottom: 2rem;
}

.event-summary .event-card {
  display: flex;
  flex-direction: column;
}

.event-summary .event-image {
  height: 200px;
  overflow: hidden;
}

.event-summary .event-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.detail-item {
  display: flex;
  justify-content: space-between;
  margin-bottom: 0.75rem;
  padding: 0.5rem 0;
  border-bottom: 1px solid #f1f5f9;
}

.detail-item .label {
  font-weight: 600;
  color: #4a5568;
}

.detail-item .value {
  color: #2d3748;
}

.detail-item .value.free {
  color: #28a745;
  font-weight: 600;
}

.form-section {
  margin-bottom: 2rem;
  padding: 1.5rem;
  background: #f8f9fa;
  border-radius: 0.75rem;
  border: 1px solid #e9ecef;
}

.form-section h3 {
  margin: 0 0 1rem 0;
  color: var(--primary);
  font-size: 1.1rem;
}

.help-text {
  display: block;
  margin-top: 0.25rem;
  font-size: 0.875rem;
  color: var(--muted);
}

.cost-breakdown {
  background: #f8f9fa;
  border: 1px solid #e9ecef;
  border-radius: 0.5rem;
  padding: 1rem;
}

.cost-line {
  display: flex;
  justify-content: space-between;
  margin-bottom: 0.5rem;
}

.cost-total {
  border-top: 1px solid #dee2e6;
  padding-top: 0.5rem;
  text-align: right;
  font-size: 1.1rem;
}

.btn-large {
  padding: 1rem 2rem;
  font-size: 1.1rem;
}

/* Enhanced Search Styles */
.filter-section {
  margin-bottom: 2rem;
  padding: 1.5rem;
  background: #f8f9fa;
  border-radius: 0.75rem;
  border: 1px solid #e9ecef;
}

.filter-section h3 {
  margin: 0 0 1rem 0;
  color: var(--primary);
  font-size: 1.1rem;
}

/* Enhanced Registration Stats */
.registrations-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 1rem;
  margin-bottom: 2rem;
  padding: 1.5rem;
  background: #f8f9fa;
  border-radius: 0.75rem;
  border: 1px solid #e9ecef;
}

.stat-item {
  text-align: center;
}

.stat-number {
  display: block;
  font-size: 2rem;
  font-weight: bold;
  color: var(--primary);
}

.stat-label {
  display: block;
  font-size: 0.875rem;
  color: var(--muted);
  margin-top: 0.25rem;
}

.registration-item {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1rem;
  background: var(--card);
  border: 1px solid #e2e8f0;
  border-radius: 0.75rem;
  margin-bottom: 0.75rem;
}

.reg-avatar .avatar {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background: var(--primary);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: bold;
  font-size: 1.2rem;
}

.reg-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 0.5rem;
}

.reg-details {
  display: flex;
  gap: 1rem;
  font-size: 0.9rem;
  color: var(--muted);
}

.contact-info {
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.no-registrations {
  text-align: center;
  padding: 3rem;
  color: var(--muted);
}

.info-note {
  margin-top: 2rem;
  padding: 1rem;
  background: #e3f2fd;
  border: 1px solid #bbdefb;
  border-radius: 0.5rem;
  color: #1565c0;
}

.no-events {
  text-align: center;
  padding: 3rem;
  color: var(--muted);
}

.btn-small {
  padding: 0.5rem 1rem;
  font-size: 0.875rem;
}

/* Responsive Design */
@media (max-width: 768px) {
  .event-content {
    grid-template-columns: 1fr;
  }
  
  .event-card {
    grid-template-columns: 1fr;
  }
  
  .filter-row {
    grid-template-columns: 1fr;
  }
  
  .action-buttons,
  .form-actions,
  .filter-actions {
    flex-direction: column;
  }
  
  .registration-layout {
    grid-template-columns: 1fr;
  }
  
  .hero-actions {
    flex-direction: column;
  }
  
  .registrations-stats {
    grid-template-columns: 1fr;
  }
  
  .registration-item {
    flex-direction: column;
    text-align: center;
  }
  
  .reg-header {
    flex-direction: column;
    gap: 0.5rem;
  }
  
  .reg-details {
    flex-direction: column;
    gap: 0.5rem;
  }
}
