/* IELTS GenAI Prep - Main Stylesheet */

:root {
  --primary-color: #2c3e50;
  --secondary-color: #3498db;
  --accent-color: #e74c3c;
  --light-color: #ecf0f1;
  --dark-color: #2c3e50;
  --success-color: #2ecc71;
  --warning-color: #f39c12;
  --danger-color: #e74c3c;
  --text-color: #333;
  --border-radius: 4px;
  --box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  --transition: all 0.3s ease;
}

/* Badge text wrapping fix */
.badge-wrap {
  white-space: normal !important;
  text-align: center !important;
  word-wrap: break-word !important;
  word-break: break-word !important;
  font-size: 1rem !important;
  display: inline-block !important;
  width: 100% !important;
  max-width: 100% !important;
  line-height: 1.3 !important;
  overflow-wrap: break-word !important;
  hyphens: auto !important;
}

/* ============================== */
/* UNIFIED BUTTON STYLES */
/* ============================== */

/* Base Button Style */
.btn {
  font-family: 'Inter', 'Segoe UI', Arial, sans-serif;
  font-weight: 500;
  padding: 0.625rem 1.25rem;
  border-radius: 8px;
  border: none;
  cursor: pointer;
  transition: all 0.2s ease;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  text-decoration: none;
  line-height: 1.5;
}

.btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  text-decoration: none;
}

.btn:active {
  transform: translateY(0);
}

/* Primary Button - Uses brand gradient */
.btn-primary {
  background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%);
  color: white;
  border: none;
}

.btn-primary:hover {
  background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%);
  box-shadow: 0 6px 20px rgba(52, 152, 219, 0.4);
  color: white;
}

/* Secondary Button */
.btn-secondary {
  background-color: #6c757d;
  color: white;
}

.btn-secondary:hover {
  background-color: #5a6268;
  color: white;
}

/* Success Button */
.btn-success {
  background-color: var(--success-color);
  color: white;
}

.btn-success:hover {
  background-color: #27ae60;
  color: white;
}

/* Danger Button */
.btn-danger {
  background-color: var(--danger-color);
  color: white;
}

.btn-danger:hover {
  background-color: #c0392b;
  color: white;
}

/* Outline Buttons */
.btn-outline-primary {
  background-color: transparent;
  color: var(--secondary-color);
  border: 2px solid var(--secondary-color);
}

.btn-outline-primary:hover {
  background-color: var(--secondary-color);
  color: white;
}

.btn-outline-secondary {
  background-color: transparent;
  color: #6c757d;
  border: 2px solid #6c757d;
}

.btn-outline-secondary:hover {
  background-color: #6c757d;
  color: white;
}

/* Button Sizes */
.btn-lg {
  padding: 0.75rem 2rem;
  font-size: 1.125rem;
}

.btn-sm {
  padding: 0.375rem 0.75rem;
  font-size: 0.875rem;
}

/* Full Width Button */
.btn-block {
  width: 100%;
}

/* ============================== */
/* UNIFIED CARD STYLES */
/* ============================== */

/* Base Card Style */
.card {
  background: white;
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  border: 1px solid rgba(0, 0, 0, 0.08);
  overflow: hidden;
  transition: all 0.2s ease;
  height: 100%;
  display: flex;
  flex-direction: column;
}

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

/* Card Header */
.card-header {
  background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%);
  color: white;
  padding: 1.25rem;
  font-weight: 600;
  border-bottom: none;
  min-height: 60px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}

/* Accessibility: Ensure sufficient color contrast */
.card-header a,
.card-header a:hover {
  color: white !important;
  text-decoration: underline;
}

.card-header h3,
.card-header h4,
.card-header h5 {
  margin: 0;
  color: white;
  font-size: 1.25rem;
}

/* Card Body */
.card-body {
  padding: 1.5rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}

/* Card Footer */
.card-footer {
  background-color: #f8f9fa;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
  padding: 1rem 1.5rem;
}

/* Card Variants */
.card-primary .card-header {
  background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%);
}

.card-success .card-header {
  background: linear-gradient(135deg, var(--success-color) 0%, #27ae60 100%);
}

.card-danger .card-header {
  background: linear-gradient(135deg, var(--danger-color) 0%, #c0392b 100%);
}

.card-warning .card-header {
  background: linear-gradient(135deg, var(--warning-color) 0%, #e67e22 100%);
}

/* Assessment Card Style */
.assessment-card {
  border-left: 4px solid var(--secondary-color);
  padding: 1.5rem;
  margin-bottom: 1rem;
}

.assessment-card:hover {
  border-left-color: var(--primary-color);
}

/* Pricing Card Style */
.pricing-card {
  position: relative;
  padding: 0;
}

.pricing-card.featured {
  border: 2px solid var(--secondary-color);
  transform: scale(1.05);
}

.pricing-card.featured::before {
  content: 'RECOMMENDED';
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--secondary-color);
  color: white;
  padding: 0.25rem 1rem;
  border-radius: 20px;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.5px;
}

/* Base Styles */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: 'Inter', 'Segoe UI', Arial, sans-serif;
  line-height: 1.6;
  color: var(--text-color);
  background-color: #f9f9f9;
  min-height: 100vh;
  margin-bottom: 50px; /* Reduced margin for better layout */
}

a {
  color: var(--secondary-color);
  text-decoration: none;
  transition: var(--transition);
}

a:hover {
  color: var(--primary-color);
  text-decoration: underline;
}

/* Container */
.container {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 15px;
}

/* Header */
.site-header {
  background-color: var(--primary-color);
  color: white;
  padding: 1rem 0;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

.site-header .container {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.site-logo {
  font-size: 1.8rem;
  font-weight: 700;
  color: white;
  text-decoration: none;
}

.site-logo:hover {
  color: var(--light-color);
  text-decoration: none;
}

/* Navigation */
.main-nav ul {
  display: flex;
  list-style: none;
}

.main-nav li {
  margin-left: 1.5rem;
}

.main-nav a {
  color: white;
  font-weight: 500;
  text-decoration: none;
  padding: 0.5rem 0;
  position: relative;
}

.main-nav a:hover {
  color: var(--light-color);
}

.main-nav a::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 2px;
  background-color: var(--light-color);
  transition: width 0.3s ease;
}

.main-nav a:hover::after {
  width: 100%;
}

/* Mobile Menu */
.menu-toggle {
  display: none;
  background: none;
  border: none;
  color: white;
  font-size: 1.5rem;
  cursor: pointer;
  z-index: 1010;
  position: relative;
}

/* Mobile nav close button */
.nav-close-btn {
  display: none;
  text-align: right;
  padding: 1rem;
  margin-bottom: 1rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.nav-close-btn button {
  background: none;
  border: none;
  color: white;
  font-size: 1.5rem;
  cursor: pointer;
}

/* Prevent body scrolling when menu is open */
body.menu-open {
  overflow: hidden;
}

/* Hero Section */
.hero {
  background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%) !important;
  color: white;
  padding: 4rem 0;
  text-align: center;
  position: relative;
  z-index: 1;
}

.hero h1 {
  font-size: 2.5rem;
  margin-bottom: 1rem;
}

.hero p {
  font-size: 1.2rem;
  max-width: 800px;
  margin: 0 auto 2rem;
}

.hero-buttons {
  display: flex;
  justify-content: center;
  gap: 1rem;
  margin-top: 2rem;
  z-index: 10;
  position: relative;
}

.hero-buttons .btn {
  min-width: 200px;
  pointer-events: auto;
}

/* Buttons */
.btn {
  display: inline-block;
  padding: 0.75rem 1.5rem;
  font-size: 1rem;
  font-weight: 500;
  text-align: center;
  text-decoration: none;
  border-radius: var(--border-radius);
  cursor: pointer;
  transition: var(--transition);
  border: none;
  position: relative;
  z-index: 5;
  pointer-events: auto;
}

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

.btn-primary:hover {
  background-color: #2980b9;
  color: white;
  text-decoration: none;
}

.btn-secondary {
  background-color: var(--light-color);
  color: var(--primary-color);
}

.btn-secondary:hover {
  background-color: #bdc3c7;
  color: var(--primary-color);
  text-decoration: none;
}

.btn-accent {
  background-color: var(--accent-color);
  color: white;
}

.btn-accent:hover {
  background-color: #c0392b;
  color: white;
  text-decoration: none;
}

.btn-lg {
  padding: 1rem 2rem;
  font-size: 1.2rem;
}

/* Cards */
.card {
  background-color: white;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  margin-bottom: 1.5rem;
  overflow: hidden;
  transition: var(--transition);
}

.card:hover {
  transform: translateY(-5px);
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}

.card-header {
  padding: 1.5rem;
  background-color: var(--primary-color);
  color: white;
}

.card-body {
  padding: 1.5rem;
}

.card-footer {
  padding: 1.5rem;
  background-color: rgba(0, 0, 0, 0.03);
}

/* Features Section */
.features {
  padding: 4rem 0;
}

.features h2 {
  text-align: center;
  margin-bottom: 3rem;
}

.features-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 2rem;
}

.feature-card {
  text-align: center;
  padding: 2rem;
}

.feature-icon {
  font-size: 3rem;
  margin-bottom: 1rem;
  color: var(--secondary-color);
}

/* Forms */
.form-group {
  margin-bottom: 1.5rem;
}

.form-control {
  display: block;
  width: 100%;
  padding: 0.75rem;
  font-size: 1rem;
  border: 1px solid #ddd;
  border-radius: var(--border-radius);
  transition: var(--transition);
}

.form-control:focus {
  border-color: var(--secondary-color);
  outline: none;
  box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.25);
}

.form-label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 500;
}

/* Alerts */
.alert {
  padding: 1rem;
  margin-bottom: 1rem;
  border-radius: var(--border-radius);
  border-left: 4px solid transparent;
}

.alert-success {
  background-color: rgba(46, 204, 113, 0.15);
  border-left-color: var(--success-color);
}

.alert-warning {
  background-color: rgba(243, 156, 18, 0.15);
  border-left-color: var(--warning-color);
}

.alert-danger {
  background-color: rgba(231, 76, 60, 0.15);
  border-left-color: var(--danger-color);
}

/* Footer */
.site-footer {
  background-color: var(--dark-color);
  color: white;
  padding: 1.5rem 0;
  margin-top: 2rem;
}

.footer-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 2rem;
}

.footer-links h3 {
  margin-bottom: 1.5rem;
  position: relative;
  padding-bottom: 0.5rem;
}

.footer-links h3::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 50px;
  height: 2px;
  background-color: var(--secondary-color);
}

.footer-links ul {
  list-style: none;
}

.footer-links li {
  margin-bottom: 0.5rem;
}

.footer-links a {
  color: #bdc3c7;
  transition: var(--transition);
  position: relative;
  z-index: 5;
  cursor: pointer;
  pointer-events: auto;
  display: inline-block;
}

.footer-links a:hover {
  color: white;
  text-decoration: none;
}

.copyright {
  text-align: center;
  margin-top: 2rem;
  padding-top: 2rem;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
}

/* Test Structure Pages */
.test-structure-nav {
  display: flex;
  justify-content: center;
  margin-bottom: 2rem;
  flex-wrap: wrap;
}

.test-structure-nav a {
  padding: 0.5rem 1rem;
  margin: 0 0.5rem 0.5rem;
  border: 1px solid var(--secondary-color);
  border-radius: var(--border-radius);
  color: var(--secondary-color);
}

.test-structure-nav a:hover,
.test-structure-nav a.active {
  background-color: var(--secondary-color);
  color: white;
  text-decoration: none;
}

.test-structure-content {
  max-width: 800px;
  margin: 0 auto;
  padding: 2rem;
  background-color: white;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
}

.test-structure-section {
  margin-bottom: 2rem;
}

.test-structure-section h3 {
  margin-bottom: 1rem;
  color: var(--primary-color);
}

/* Practice Tests */
.practice-test {
  background-color: white;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  padding: 2rem;
  margin-bottom: 2rem;
}

.question {
  margin-bottom: 1.5rem;
}

.question-text {
  margin-bottom: 0.5rem;
  font-weight: 500;
}

.timer {
  position: fixed;
  top: 1rem;
  right: 1rem;
  background-color: var(--primary-color);
  color: white;
  padding: 0.5rem 1rem;
  border-radius: var(--border-radius);
  z-index: 100;
}

/* Speaking Assessment */
.speaking-test {
  background-color: white;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  padding: 2rem;
  margin-bottom: 2rem;
}

.prompt-text {
  font-size: 1.2rem;
  margin-bottom: 1.5rem;
  padding: 1rem;
  background-color: #f8f9fa;
  border-left: 4px solid var(--secondary-color);
}

.recording-controls {
  display: flex;
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.record-time {
  font-size: 1.2rem;
  font-weight: bold;
  color: var(--accent-color);
}

.feedback {
  margin-top: 2rem;
  padding: 1rem;
  background-color: #f8f9fa;
  border-radius: var(--border-radius);
}

.score {
  font-size: 2rem;
  font-weight: bold;
  color: var(--primary-color);
  margin-bottom: 1rem;
}

/* Pricing Section on Homepage */
.pricing {
  position: relative;
  z-index: 1;
}

.pricing .card {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  margin-bottom: 1rem;
}

.pricing .card:hover {
  transform: translateY(-10px);
  box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}

.pricing .card-header {
  position: relative;
  border-bottom: none;
  padding-top: 2rem;
  padding-bottom: 2rem;
}

.pricing .badge {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 0.5rem 1rem;
  font-weight: 500;
  z-index: 2;
}

.pricing-features ul li {
  padding: 0.5rem 0;
}

.pricing-features .text-muted {
  opacity: 0.7;
}

/* Subscription Page */
.subscription-section {
  background-color: #f8f9fa;
  border-radius: var(--border-radius);
  padding: 2rem;
  margin-bottom: 3rem;
  box-shadow: 0 3px 10px rgba(0,0,0,0.05);
  position: relative;
  overflow: hidden;
}

.subscription-section::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 5px;
}

.subscription-section.academic::before {
  background-color: #3498db; /* Blue for Academic */
}

.subscription-section.general::before {
  background-color: #27ae60; /* Green for General Training */
}

.section-title-container {
  position: relative;
  margin-bottom: 2.5rem;
}

.section-title {
  text-align: center;
  position: relative;
  z-index: 1;
}

.section-icon {
  position: absolute;
  top: -25px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 4rem;
  opacity: 0.05;
  z-index: 0;
}

.pricing-table {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 2rem;
  margin: 2rem 0;
}

.pricing-card {
  background-color: white;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  overflow: hidden;
  text-align: center;
  transition: var(--transition);
  border: 1px solid #f0f0f0;
}

.pricing-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}

.pricing-header {
  color: white;
  padding: 2rem;
}

.academic .pricing-header {
  background-color: #3498db; /* Blue for Academic */
}

.general .pricing-header {
  background-color: #27ae60; /* Green for General Training */
}

.pricing-badge {
  display: inline-block;
  padding: 0.25rem 0.75rem;
  background-color: rgba(255, 255, 255, 0.2);
  border-radius: 20px;
  margin-bottom: 0.5rem;
  font-size: 0.9rem;
}

.pricing-name {
  font-size: 1.5rem;
  margin-bottom: 0.5rem;
}

.pricing-price {
  font-size: 3rem;
  font-weight: bold;
}

.pricing-duration {
  font-size: 1rem;
  opacity: 0.8;
}

.pricing-features {
  padding: 2rem;
}

.pricing-features ul {
  list-style: none;
  margin-bottom: 2rem;
}

.pricing-features li {
  margin-bottom: 0.5rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid #eee;
}

.academic .pricing-features li strong {
  color: #3498db; /* Blue for Academic */
}

.general .pricing-features li strong {
  color: #27ae60; /* Green for General Training */
}

.pricing-popular {
  position: relative;
}

.pricing-popular::before {
  content: 'Best Value';
  position: absolute;
  top: 0;
  right: 0;
  background-color: var(--accent-color);
  color: white;
  padding: 0.25rem 1rem;
  font-size: 0.8rem;
  border-bottom-left-radius: var(--border-radius);
}

.payment-methods {
  background-color: white;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  padding: 2rem;
  margin-top: 2rem;
}

.payment-methods h3 {
  margin-bottom: 1.5rem;
}

.payment-logos {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: center;
  margin-bottom: 1.5rem;
}

.payment-logo {
  padding: 0.5rem 1rem;
  border: 1px solid #ddd;
  border-radius: var(--border-radius);
  transition: var(--transition);
}

.payment-logo:hover {
  border-color: var(--secondary-color);
}

/* Media Queries */
@media (max-width: 768px) {
  .menu-toggle {
    display: block;
  }
  
  .main-nav {
    position: fixed;
    top: 0;
    left: -100%;
    width: 85%;
    height: 100vh;
    background-color: var(--primary-color);
    padding: 1rem;
    z-index: 1000;
    transition: left 0.3s ease;
    overflow-y: auto;
    box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
  }
  
  .main-nav.active {
    left: 0;
  }
  
  .main-nav ul {
    flex-direction: column;
    padding: 0;
    margin: 0;
  }
  
  .main-nav li {
    margin: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  }
  
  .main-nav a {
    color: white;
    padding: 1rem 0.5rem;
    display: block;
    width: 100%;
  }
  
  .main-nav a:hover {
    background-color: rgba(255, 255, 255, 0.1);
  }
  
  /* Show mobile nav close button */
  .nav-close-btn {
    display: block;
  }
  
  /* Additional hero section fixes for mobile */
  .hero h1.display-4 {
    font-size: 1.8rem !important;
    line-height: 1.3;
  }
  
  .hero .badge {
    display: inline-block;
    word-break: normal;
    white-space: normal;
    text-align: center;
    line-height: 1.4;
    width: 100%;
    max-width: 100%;
    font-size: 0.9rem !important;
  }
  
  .hero .lead {
    font-size: 1rem !important;
    line-height: 1.5;
  }
  
  .hero .align-items-center {
    margin: 0.25rem 0;
  }
  
  .hero .d-flex.justify-content-center {
    flex-direction: column;
    gap: 0.5rem;
  }
  
  /* Hero section mobile adjustments */
  .hero {
    padding: 2rem 0;
  }
  
  .hero h1 {
    font-size: 1.8rem;
    line-height: 1.3;
  }
  
  .hero p {
    font-size: 0.95rem;
    line-height: 1.5;
  }
  
  .hero .badge {
    padding: 0.35rem;
    margin-bottom: 1rem;
    display: inline-block;
    font-size: 0.9rem;
    line-height: 1.3;
    width: 100%;
    white-space: normal !important;
    word-break: break-word !important;
    word-wrap: break-word !important;
    max-width: 100%;
    overflow-wrap: break-word !important;
  }
  
  .hero .badge-wrap {
    padding: 0.5rem !important;
    white-space: normal !important;
    word-break: break-word !important;
    word-wrap: break-word !important;
    overflow-wrap: break-word !important;
  }
  
  .hero .d-flex {
    flex-direction: column;
    gap: 0.5rem;
    align-items: center;
  }
  
  .hero-buttons {
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
    width: 100%;
  }
  
  .hero-buttons .btn {
    width: 100%;
    padding: 0.8rem;
    font-size: 1rem;
  }
  
  /* Fix content overflow */
  .container {
    padding-left: 10px;
    padding-right: 10px;
    width: 100%;
    overflow-x: hidden;
  }
  
  /* Card layout for mobile */
  .row {
    margin-left: -5px;
    margin-right: -5px;
  }
  
  .col-md-4, .col-md-6, .col-lg-6 {
    padding-left: 5px;
    padding-right: 5px;
  }
  
  .features-grid {
    grid-template-columns: 1fr;
  }
  
  .footer-grid {
    grid-template-columns: 1fr;
    text-align: center;
  }
  
  .footer-links h3::after {
    left: 50%;
    transform: translateX(-50%);
  }
  
  .pricing-table {
    grid-template-columns: 1fr;
  }
  
  /* Enhanced mobile form elements */
  .form-control {
    font-size: 16px; /* Prevents iOS zoom on focus */
    padding: 12px;
    height: auto;
  }
  
  input[type="submit"], 
  button[type="submit"] {
    width: 100%;
    padding: 12px;
    margin-top: 10px;
  }
  
  /* Improved touch targets */
  .btn, 
  .nav-link, 
  input[type="checkbox"], 
  input[type="radio"], 
  select {
    min-height: 44px; /* Apple's recommended minimum touch target size */
  }
  
  /* Navigation improvements */
  .site-header {
    position: sticky;
    top: 0;
    z-index: 999;
  }
  
  /* Fixed timer display for test pages */
  .timer {
    top: 70px; /* Below the sticky header */
    right: 10px;
    font-size: 0.9rem;
    padding: 0.4rem 0.8rem;
  }
  
  /* Improved reading experience for test content */
  .reading-passage {
    font-size: 16px;
    line-height: 1.6;
    padding: 15px;
    margin-bottom: 20px;
  }
  
  /* Audio controls enhancement */
  audio {
    width: 100%;
    margin: 10px 0;
  }
  
  /* Speaking test mobile improvements */
  .speaking-test {
    padding: 1.25rem;
  }
  
  .prompt-text {
    font-size: 1rem;
    padding: 0.75rem;
  }
  
  .recording-controls {
    flex-direction: column;
    gap: 0.5rem;
  }
  
  .recording-controls button {
    width: 100%;
    margin-bottom: 0.5rem;
  }
  
  /* Writing test mobile improvements */
  .writing-area textarea {
    min-height: 200px;
    font-size: 16px;
    padding: 12px;
  }
  
  /* Table display improvements */
  table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
  }
  
  /* Product/assessment cards */
  .product-card {
    margin-bottom: 1.25rem;
  }
  
  /* Bottom navigation for mobile */
  .bottom-nav {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background-color: var(--primary-color);
    display: flex;
    justify-content: space-around;
    padding: 0.5rem 0;
    box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.1);
    z-index: 900;
  }
  
  .bottom-nav a {
    color: white;
    text-align: center;
    padding: 0.5rem;
    font-size: 0.8rem;
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  
  .bottom-nav i {
    font-size: 1.2rem;
    margin-bottom: 0.25rem;
  }
  
  /* Add padding to page bottom to account for bottom nav */
  .page-with-bottom-nav {
    padding-bottom: 70px;
  }
  
  /* Checkout and payment improvements */
  .checkout-summary {
    margin-bottom: 1.5rem;
    padding: 1rem;
  }
  
  .payment-method-selection label {
    padding: 12px;
    margin-bottom: 10px;
  }
}

/* Utility Classes */
.mt-1 { margin-top: 0.5rem; }
.mt-2 { margin-top: 1rem; }
.mt-3 { margin-top: 1.5rem; }
.mt-4 { margin-top: 2rem; }
.mt-5 { margin-top: 3rem; }

.mb-1 { margin-bottom: 0.5rem; }
.mb-2 { margin-bottom: 1rem; }
.mb-3 { margin-bottom: 1.5rem; }
.mb-4 { margin-bottom: 2rem; }
.mb-5 { margin-bottom: 3rem; }

.p-1 { padding: 0.5rem; }
.p-2 { padding: 1rem; }
.p-3 { padding: 1.5rem; }
.p-4 { padding: 2rem; }
.p-5 { padding: 3rem; }

.text-center { text-align: center; }
.text-left { text-align: left; }
.text-right { text-align: right; }

.fw-bold { font-weight: 700; }
.fw-normal { font-weight: 400; }

.text-primary { color: var(--primary-color); }
.text-secondary { color: var(--secondary-color); }
.text-accent { color: var(--accent-color); }
.text-light { color: var(--light-color); }
.text-dark { color: var(--dark-color); }
.text-success { color: var(--success-color); }
.text-warning { color: var(--warning-color); }
.text-danger { color: var(--danger-color); }

.bg-primary { background-color: var(--primary-color); }
.bg-secondary { background-color: var(--secondary-color); }
.bg-accent { background-color: var(--accent-color); }
.bg-light { background-color: var(--light-color); }
.bg-dark { background-color: var(--dark-color); }
.bg-success { background-color: var(--success-color); }
.bg-warning { background-color: var(--warning-color); }
.bg-danger { background-color: var(--danger-color); }

.d-flex { display: flex; }
.flex-wrap { flex-wrap: wrap; }
.justify-content-center { justify-content: center; }
.justify-content-between { justify-content: space-between; }
.align-items-center { align-items: center; }
.flex-column { flex-direction: column; }

/* Connection Status Indicator */
.connection-indicator {
  position: fixed;
  bottom: 1rem;
  left: 1rem;
  background-color: var(--warning-color);
  color: white;
  padding: 0.5rem 1rem;
  border-radius: var(--border-radius);
  z-index: 100;
  display: none;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
  animation: fadeIn 0.3s ease;
}

.connection-indicator.visible {
  display: block;
}

/* Error message fix - remove unwanted error messages */
div.error-notification {
  display: none !important;
}

/* Fix for the "ERROR: Invalid details" message that appears in the bottom-right corner */
div[style*="position:fixed"][style*="bottom:"][style*="right:"] {
  display: none !important;
}

/* Hide unwanted developer tools and panels */
#console-panel,
#elements-panel,
#network-panel,
#resources-panel,
#settings-panel,
.devtools-panel,
.chrome-devtools,
div[class*="devtools"],
div[id*="devtools"],
div[class*="DevTools"],
div[id*="DevTools"],
.chrome-devtools-panel,
#devtools-main,
#devtools-window,
div[style*="position: fixed"][style*="bottom: 0"],
div[style*="position:fixed"][style*="bottom:0"],
div[style*="position: fixed"][style*="height:"],
div[style*="position:fixed"][style*="height:"] {
  display: none !important;
  visibility: hidden !important;
  height: 0 !important;
  width: 0 !important;
  opacity: 0 !important;
  pointer-events: none !important;
  max-height: 0 !important;
  min-height: 0 !important;
  overflow: hidden !important;
  position: absolute !important;
  top: -9999px !important;
  left: -9999px !important;
  z-index: -9999 !important;
}

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

/* Connection Status Styles */
body.connection-lost .submit-buttons,
body.connection-lost .form-actions {
  opacity: 0.5;
  pointer-events: none;
}

/* Low-bandwidth Mode */
.low-bandwidth-mode .hero {
  background: var(--primary-color);
}

.low-bandwidth-mode img {
  max-width: 100%;
  height: auto;
}

.low-bandwidth-mode video,
.low-bandwidth-mode iframe {
  display: none;
}

/* Study Streak Styles */
.streak-circle {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 0 auto;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}

.streak-number {
  font-size: 2rem;
  font-weight: bold;
}

.activity-calendar {
  border-radius: var(--border-radius);
  padding: 1rem;
  background-color: #f9f9f9;
}

.activity-day {
  width: 30px;
  height: 30px;
  margin: 2px;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 0.8rem;
  border-radius: 4px;
  background-color: #eee;
  color: #999;
  transition: all 0.2s ease;
}

.activity-day.active {
  background-color: var(--success-color);
  color: white;
  box-shadow: 0 2px 5px rgba(46, 204, 113, 0.3);
}

.streak-motivation {
  padding: 1rem;
  border-radius: var(--border-radius);
  background-color: #f0f8ff;
  color: var(--primary-color);
  font-weight: 500;
}

/* Responsive streak calendar */
@media (max-width: 768px) {
  .activity-day {
    width: 25px;
    height: 25px;
    font-size: 0.7rem;
  }
  
  .streak-circle {
    width: 60px;
    height: 60px;
  }
  
  .streak-number {
    font-size: 1.5rem;
  }
  
  /* Mobile-specific styles for the TrueScore and Elaris sections */
  .test-sections {
    padding: 2rem 0;
  }
  
  .test-sections h2 {
    font-size: 1.5rem;
    margin-bottom: 1.5rem;
  }
  
  .test-sections .card {
    margin-bottom: 1rem;
  }
  
  .test-sections .card-header {
    padding: 0.75rem;
  }
  
  .test-sections .card-header h3 {
    font-size: 1.25rem;
  }
  
  .test-sections .card-body {
    padding: 1rem;
  }
  
  .test-sections .badge {
    font-size: 0.75rem;
    padding: 0.25rem 0.5rem;
  }
  
  .test-sections .fa-3x {
    font-size: 2em;
  }
  
  /* Mobile styles for testimonials */
  .testimonials h2 {
    font-size: 1.5rem;
    margin-bottom: 1.5rem;
  }
  
  .testimonial-card {
    margin-bottom: 1rem;
  }
  
  /* CTA section mobile styles */
  .cta {
    padding: 2rem 0;
  }
  
  .cta h2 {
    font-size: 1.5rem;
    margin-bottom: 1rem;
  }
  
  .cta .badge {
    margin-bottom: 0.5rem;
    font-size: 0.9rem;
    display: inline-block;
    padding: 0.35rem 0.75rem;
  }
  
  .cta .lead {
    font-size: 0.95rem;
    margin-bottom: 1.5rem;
  }
  
  /* Product pricing cards */
  .pricing-card .card-header h3 {
    font-size: 1.25rem;
  }
  
  .pricing-features li {
    font-size: 0.9rem;
  }
  
  /* Fix footer alignment */
  .site-footer {
    text-align: center;
    padding: 2rem 0;
  }
}

/* Ad Containers Styling - Removed */

/* Microphone Test Styles */
.mic-level-container {
  margin: 1rem 0;
}

.mic-level-meter {
  width: 100%;
  height: 20px;
  background-color: #e9ecef;
  border-radius: 10px;
  overflow: hidden;
  margin: 0.5rem 0;
}

.mic-level-bar {
  height: 100%;
  width: 0%;
  background-color: #007bff;
  border-radius: 10px;
  transition: width 0.15s ease, background-color 0.3s ease;
}

.mic-status {
  font-size: 0.9rem;
  font-weight: 500;
  margin-top: 0.5rem;
}

.test-timer {
  font-size: 1.2rem;
  font-weight: bold;
}

.mic-test-results {
  margin-top: 1.5rem;
}

/* Assessment Recovery Styles */
.recovery-notification {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 1050;
  max-width: 350px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  border-radius: 8px;
  overflow: hidden;
  transition: all 0.3s ease;
}

.recovery-dialog-backdrop {
  background-color: rgba(0, 0, 0, 0.6);
}

.recovery-dialog .modal-content {
  border-radius: 10px;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
}

.recovery-dialog .modal-header {
  border-top-left-radius: 10px;
  border-top-right-radius: 10px;
}

.connection-status-indicator {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  margin-right: 8px;
  vertical-align: middle;
}

.connection-status-indicator.online {
  background-color: var(--success-color);
}

.connection-status-indicator.offline {
  background-color: var(--danger-color);
}

.connection-toast {
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1050;
  min-width: 250px;
  max-width: 350px;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
