/* NBN Product Flow - Troppo Theme */
@import url(troppo-unified-theme.css);

/* ==========================================
   PRODUCT FLOW CONTAINER
   ========================================== */

.nbn-product-flow-container {
    background: var(--troppo-midnight);
    min-height: 100vh;
    position: relative;
    overflow: hidden;
}

/* Add animated background */
.nbn-product-flow-container::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: url(data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 320'%3E%3Cpath fill='url(%23gradient)' fill-opacity='0.1' d='m0,192L48,181.3C96,171,192,149,288,154.7C384,160,480,192,576,192C672,192,768,160,864,149.3C960,139,1056,149,1152,170.7C1248,192,1344,224,1392,240L1440,256L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z'%3E%3C/path%3E%3Cdefs%3E%3ClinearGradient id='gradient'%3E%3Cstop offset='0%25' stop-color='%2320d6b4'/%3E%3Cstop offset='100%25' stop-color='%23ff6b6b'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E);
  background-size: 200% 100%;
  animation: troppoWave 30s linear infinite;
  pointer-events: none;
}

/* ==========================================
   PROGRESS HEADER
   ========================================== */

.nbn-flow-header {
  background: rgba(26, 26, 46, 0.8);
  backdrop-filter: blur(20px);
  border-bottom: 1px solid var(--troppo-glass-border);
  padding: 2rem 0;
  position: sticky;
  top: 0;
  z-index: 100;
  animation: troppoSlideDown 0.6s ease-out;
}

@keyframes troppoSlideDown {

  from {
    transform: translateY(-100%);
    opacity: 0;
  }

  to {
    transform: translateY(0);
    opacity: 1;
  }
}

/* Progress Steps - Enhanced Design */
.nbn-flow-progress {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 2rem;
}

.nbn-flow-steps {
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: relative;
}

/* Progress Line */
.nbn-flow-progress-line {
  position: absolute;
  top: 24px;
  left: 0;
  right: 0;
  height: 4px;
  background: var(--troppo-glass-border);
  z-index: -1;
}

.nbn-flow-progress-fill {
  height: 100%;
  background: var(--troppo-gradient-speed);
  border-radius: 2px;
  transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: 0 0 20px rgba(32, 214, 180, 0.5);
}

/* Individual Steps */
.nbn-flow-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  position: relative;
  flex: 1;
  cursor: pointer;
  transition: all var(--troppo-transition-smooth);
}

.nbn-flow-step-circle {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--troppo-glass);
  border: 3px solid var(--troppo-glass-border);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
  font-size: 1.25rem;
  color: var(--troppo-text-muted);
  position: relative;
  transition: all var(--troppo-transition-smooth);
}

/* Step Icons */
.nbn-flow-step[data-step="1"] .nbn-flow-step-icon::before {
  content: "📍";
}

.nbn-flow-step[data-step="2"] .nbn-flow-step-icon::before {
  content: "🚀";
}

.nbn-flow-step[data-step="3"] .nbn-flow-step-icon::before {
  content: "📡";
}

.nbn-flow-step[data-step="4"] .nbn-flow-step-icon::before {
  content: "📞";
}

.nbn-flow-step[data-step="5"] .nbn-flow-step-icon::before {
  content: "🔍";
}

.nbn-flow-step[data-step="6"] .nbn-flow-step-icon::before {
  content: "🛒";
}

.nbn-flow-step-icon::before {
  font-size: 1.5rem;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  opacity: 0;
  transition: opacity var(--troppo-transition-smooth);
}

/* Active Step */
.nbn-flow-step.active .nbn-flow-step-circle {
  background: var(--troppo-gradient-sunset);
  border-color: transparent;
  color: white;
  transform: scale(1.1);
  box-shadow: 0 0 30px rgba(255, 142, 83, 0.6);
}

.nbn-flow-step.active .nbn-flow-step-icon::before {
  opacity: 1;
}

.nbn-flow-step.active .nbn-flow-step-number {
  display: none;
}

/* Completed Step */
.nbn-flow-step.completed .nbn-flow-step-circle {
  background: var(--troppo-gradient-lagoon);
  border-color: transparent;
  color: white;
}

.nbn-flow-step.completed .nbn-flow-step-circle::after {
  content: "✓";
  position: absolute;
  font-size: 1.5rem;
  animation: troppoCheckmark 0.5s ease-out;
}

@keyframes troppoCheckmark {

  from {
    transform: scale(0) rotate(-180deg);
  }

  to {
    transform: scale(1) rotate(0);
  }
}

.nbn-flow-step.completed .nbn-flow-step-number {
  display: none;
}

/* Step Labels */
.nbn-flow-step-label {
  font-size: 0.875rem;
  color: var(--troppo-text-secondary);
  text-align: center;
  max-width: 100px;
  transition: all var(--troppo-transition-smooth);
}

.nbn-flow-step:hover .nbn-flow-step-label {
  color: var(--troppo-text-primary);
}

.nbn-flow-step.active .nbn-flow-step-label {
  color: var(--troppo-text-primary);
  font-weight: 700;
}

/* ==========================================
   MAIN CONTENT AREA
   ========================================== */

.nbn-flow-content {
  max-width: 1200px;
  margin: 0 auto;
  padding: 3rem 2rem;
  min-height: calc(100vh - 200px);
  position: relative;
  z-index: 10;
}

/* Step Content Container */
.nbn-flow-step-content {
  opacity: 0;
  transform: translateY(20px);
  animation: troppoFadeInUp 0.6s ease-out forwards;
}

/* Step Titles */
.nbn-step-title {
  font-size: 2.5rem;
  font-weight: 800;
  color: white;
  text-align: center;
  margin-bottom: 0.5rem;
}

.nbn-step-subtitle {
  font-size: 1rem;
  color: rgba(255, 255, 255, 0.7);
  text-align: center;
  margin-bottom: 3rem;
}

/* ==========================================
   CART SUMMARY SIDEBAR
   ========================================== */

.nbn-flow-with-cart {
  display: grid;
  grid-template-columns: 1fr 380px;
  gap: 3rem;
  align-items: start;
}

.nbn-cart-summary {
  position: sticky;
  top: 120px;
  background: rgba(26, 26, 46, 0.8);
  backdrop-filter: blur(20px);
  border: 1px solid var(--troppo-glass-border);
  border-radius: var(--troppo-radius-lg);
  padding: 2rem;
  animation: troppoSlideInRight 0.8s ease-out 0.4s both;
}

.nbn-cart-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 2rem;
  padding-bottom: 1.5rem;
  border-bottom: 2px solid var(--troppo-glass-border);
}

.nbn-cart-title {
  font-size: 1.5rem;
  font-weight: 800;
  color: var(--troppo-text-primary);
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.nbn-cart-title::before {
  content: "🛒";
  font-size: 1.25rem;
}

.nbn-cart-count {
  background: var(--troppo-gradient-sunset);
  color: white;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 0.875rem;
  animation: troppoPulse 2s infinite;
}

/* Cart Items */
.nbn-cart-items {
  margin-bottom: 2rem;
}

.nbn-cart-item {
  background: var(--troppo-glass);
  border-radius: var(--troppo-radius-md);
  padding: 1.25rem;
  margin-bottom: 1rem;
  position: relative;
  overflow: hidden;
  transition: all var(--troppo-transition-smooth);
}

.nbn-cart-item::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: var(--troppo-gradient-sunset);
  opacity: 0;
  transition: opacity var(--troppo-transition-smooth);
}

.nbn-cart-item:hover {
  transform: translateX(4px);
}

.nbn-cart-item:hover::before {
  opacity: 1;
}

.nbn-cart-item-name {
  font-weight: 700;
  color: var(--troppo-text-primary);
  margin-bottom: 0.5rem;
  font-size: 1.125rem;
}

.nbn-cart-item-details {
  color: var(--troppo-text-secondary);
  font-size: 0.875rem;
  margin-bottom: 0.5rem;
}

.nbn-cart-item-price {
  font-weight: 700;
  color: var(--troppo-lagoon);
  font-size: 1.125rem;
}

/* Cart Totals */
.nbn-cart-totals {
  padding-top: 1.5rem;
  border-top: 2px solid var(--troppo-glass-border);
  margin-bottom: 2rem;
}

.nbn-cart-total-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1rem;
  color: var(--troppo-text-secondary);
}

.nbn-cart-total-row.total {
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--troppo-text-primary);
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--troppo-glass-border);
}

.nbn-cart-total-value {
  background: var(--troppo-gradient-sunset);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* Cart Actions */
.nbn-cart-actions {
  display: flex;
  gap: 1rem;
}

.nbn-cart-checkout {
  flex: 1;
  padding: 1rem;
  font-size: 1.125rem;
  font-weight: 700;
  position: relative;
  overflow: hidden;
}

.nbn-cart-checkout::after {
  content: "→";
  position: absolute;
  right: 20px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 1.5rem;
  transition: transform var(--troppo-transition-smooth);
}

.nbn-cart-checkout:hover::after {
  transform: translateY(-50%) translateX(5px);
}

/* ==========================================
   STEP NAVIGATION
   ========================================== */

.nbn-flow-navigation {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 3rem;
  padding-top: 2rem;
  border-top: 1px solid var(--troppo-glass-border);
}

.nbn-flow-nav-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
}

.nbn-flow-back::before {
  content: "←";
  font-size: 1.25rem;
}

.nbn-flow-next::after {
  content: "→";
  font-size: 1.25rem;
}

/* ==========================================
   MODEM/HARDWARE SELECTION
   ========================================== */

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

.nbn-hardware-card {
  background: #1a1a2e;
  border: 1px solid rgba(79, 209, 197, 0.3);
  border-radius: var(--troppo-radius-lg);
  padding: 2rem;
  text-align: center;
  cursor: pointer;
  transition: all var(--troppo-transition-smooth);
  position: relative;
  overflow: hidden;
  color: white;
}

.nbn-hardware-card h3 {
  color: white;
  font-size: 1.5rem;
  margin-bottom: 0.5rem;
}

.nbn-hardware-card p {
  color: rgba(255, 255, 255, 0.7);
  margin-bottom: 1.5rem;
}

.nbn-hardware-card .nbn-price {
  font-size: 2rem;
  font-weight: 700;
  color: white;
  margin-bottom: 1.5rem;
}

.nbn-hardware-card::before {
  content: "";
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(circle, var(--troppo-lagoon) 0%, transparent 70%);
  opacity: 0;
  transition: opacity var(--troppo-transition-smooth);
}

.nbn-hardware-card:hover {
  transform: translateY(-8px);
  border-color: var(--troppo-lagoon);
  box-shadow:
    0 20px 40px rgba(0, 0, 0, 0.3),
    0 0 40px rgba(32, 214, 180, 0.3);
}

.nbn-hardware-card:hover::before {
  opacity: 0.1;
  animation: troppoRotate 15s linear infinite;
}

.nbn-hardware-card.selected {
  border-color: var(--troppo-lagoon);
  background: linear-gradient(
    135deg,
    rgba(32, 214, 180, 0.1) 0%,
    rgba(78, 205, 196, 0.1) 100%
  );
}

/* Hardware Select Button */
.nbn-select-hardware {
  width: 100%;
  background: linear-gradient(135deg, #ff8e53 0%, #ffd93d 100%);
  color: white;
  border: none;
  padding: 0.875rem 2rem;
  border-radius: 50px;
  font-weight: 700;
  font-size: 0.875rem;
  text-transform: none;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 4px 12px rgba(255, 142, 83, 0.3);
  position: relative;
  z-index: 1;
}

.nbn-select-hardware:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(255, 142, 83, 0.4);
}

.nbn-hardware-image {
  width: 150px;
  height: 150px;
  margin: 0 auto 1.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 5rem;
  filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.2));
}

.nbn-hardware-name {
  font-size: 1.5rem;
  font-weight: 800;
  color: var(--troppo-text-primary);
  margin-bottom: 0.5rem;
}

.nbn-hardware-description {
  color: var(--troppo-text-secondary);
  margin-bottom: 1.5rem;
  line-height: 1.6;
}

.nbn-hardware-price {
  font-size: 2rem;
  font-weight: 900;
  color: var(--troppo-text-primary);
  margin-bottom: 1rem;
}

.nbn-hardware-features {
  list-style: none;
  padding: 0;
  margin: 0;
  text-align: left;
}

.nbn-hardware-feature {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.5rem;
  color: var(--troppo-text-secondary);
}

.nbn-hardware-feature::before {
  content: "✓";
  color: var(--troppo-lagoon);
  font-weight: 700;
}

/* ==========================================
   VOIP PHONE SELECTION
   ========================================== */

.nbn-voip-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 1.5rem;
  margin-bottom: 3rem;
}

/* VOIP Card Styles */
.nbn-voip-card {
  background: #1a1a2e;
  border: 1px solid rgba(79, 209, 197, 0.3);
  border-radius: var(--troppo-radius-lg);
  padding: 2rem;
  text-align: center;
  transition: all 0.3s ease;
  color: white;
}

.nbn-voip-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
  border-color: var(--troppo-lagoon);
}

.nbn-voip-card h3 {
  color: white;
  font-size: 1.5rem;
  margin-bottom: 0.5rem;
}

.nbn-voip-card p {
  color: rgba(255, 255, 255, 0.7);
  margin-bottom: 1.5rem;
}

.nbn-voip-card .nbn-price {
  font-size: 2rem;
  font-weight: 700;
  color: white;
  margin-bottom: 1.5rem;
}

/* VOIP Option Buttons */
.nbn-voip-option {
  background: #1a1a2e;
  border: 1px solid rgba(79, 209, 197, 0.3);
  color: white;
  padding: 1.5rem 2rem;
  border-radius: var(--troppo-radius-lg);
  font-weight: 600;
  font-size: 1rem;
  cursor: pointer;
  transition: all 0.3s ease;
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 0.5rem;
  min-width: 250px;
}

.nbn-voip-option:hover {
  transform: translateY(-2px);
  border-color: var(--troppo-lagoon);
  box-shadow: 0 6px 20px rgba(79, 209, 197, 0.3);
}

.nbn-voip-option.selected {
  background: linear-gradient(
    135deg,
    rgba(32, 214, 180, 0.1) 0%,
    rgba(78, 205, 196, 0.1) 100%
  );
  border-color: var(--troppo-lagoon);
}

.nbn-voip-option-icon {
  font-size: 1.5rem;
  color: var(--troppo-lagoon);
}

.nbn-voip-option-text {
  color: white;
}

/* VOIP Plan Container */
.nbn-voip-plan-container {
  margin-top: 2rem;
}

.nbn-voip-plan-card {
  background: #1a1a2e;
  border: 1px solid rgba(79, 209, 197, 0.3);
  border-radius: var(--troppo-radius-lg);
  padding: 2rem;
  color: white;
  transition: all 0.3s ease;
}

.nbn-voip-plan-card.selected {
  border-color: var(--troppo-lagoon);
  background: linear-gradient(
    135deg,
    rgba(32, 214, 180, 0.1) 0%,
    rgba(78, 205, 196, 0.1) 100%
  );
}

.nbn-voip-plan-header h3 {
  color: white;
  font-size: 1.75rem;
  margin-bottom: 0.5rem;
}

.nbn-voip-plan-price {
  font-size: 2rem;
  font-weight: 700;
  color: var(--troppo-lagoon);
  margin-bottom: 1.5rem;
}

.nbn-voip-plan-term {
  font-size: 0.875rem;
  color: rgba(255, 255, 255, 0.7);
  font-weight: 400;
}

.nbn-voip-plan-features h4 {
  color: white;
  margin-bottom: 1rem;
}

.nbn-voip-plan-features ul {
  list-style: none;
  padding: 0;
}

.nbn-voip-plan-features li {
  color: rgba(255, 255, 255, 0.8);
  padding: 0.5rem 0;
  padding-left: 1.5rem;
  position: relative;
}

.nbn-voip-plan-features li::before {
  content: "✓";
  position: absolute;
  left: 0;
  color: var(--troppo-lagoon);
  font-weight: 700;
}

/* VOIP Select/Remove Buttons */
.nbn-select-voip,
.nbn-remove-voip {
  width: 100%;
  background: linear-gradient(135deg, #ff8e53 0%, #ffd93d 100%);
  color: white;
  border: none;
  padding: 0.875rem 2rem;
  border-radius: 50px;
  font-weight: 700;
  font-size: 0.875rem;
  text-transform: none;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 4px 12px rgba(255, 142, 83, 0.3);
}

.nbn-select-voip:hover,
.nbn-remove-voip:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(255, 142, 83, 0.4);
}

.nbn-remove-voip {
  background: linear-gradient(135deg, #666 0%, #999 100%);
}

/* VOIP Question Section */
.nbn-voip-question h3 {
  color: white;
  font-size: 1.5rem;
  margin-bottom: 0.5rem;
}

.nbn-voip-description {
  color: rgba(255, 255, 255, 0.7);
  margin-bottom: 2rem;
}

.nbn-voip-options {
  display: flex;
  gap: 1rem;
  justify-content: center;
  flex-wrap: wrap;
}

.nbn-voip-option {
  background: var(--troppo-glass);
  border: 2px solid var(--troppo-glass-border);
  border-radius: var(--troppo-radius-md);
  padding: 1.5rem;
  cursor: pointer;
  transition: all var(--troppo-transition-smooth);
  position: relative;
}

.nbn-voip-option:hover {
  border-color: var(--troppo-sunset);
  transform: translateY(-4px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
}

.nbn-voip-option.selected {
  border-color: var(--troppo-sunset);
  background: linear-gradient(
    135deg,
    rgba(255, 142, 83, 0.1) 0%,
    rgba(255, 217, 61, 0.1) 100%
  );
}

.nbn-voip-option.selected::after {
  content: "✓";
  position: absolute;
  top: 1rem;
  right: 1rem;
  width: 28px;
  height: 28px;
  background: var(--troppo-gradient-sunset);
  color: white;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
}

/* ==========================================
   AVCID VERIFICATION
   ========================================== */

.nbn-avcid-form {
  max-width: 600px;
  margin: 0 auto;
  background: rgba(26, 26, 46, 0.6);
  backdrop-filter: blur(20px);
  border: 1px solid var(--troppo-glass-border);
  border-radius: var(--troppo-radius-lg);
  padding: 3rem;
}

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

.nbn-avcid-title {
  font-size: 2rem;
  font-weight: 800;
  color: var(--troppo-text-primary);
  margin-bottom: 0.5rem;
}

.nbn-avcid-subtitle {
  color: var(--troppo-text-secondary);
  line-height: 1.6;
}

.nbn-avcid-input-group {
  margin-bottom: 2rem;
}

.nbn-avcid-input {
  text-align: center;
  font-size: 1.5rem;
  letter-spacing: 2px;
  text-transform: uppercase;
}

.nbn-avcid-help {
  background: var(--troppo-glass);
  border-radius: var(--troppo-radius-md);
  padding: 1.5rem;
  margin-top: 2rem;
}

.nbn-avcid-help-title {
  font-weight: 700;
  color: var(--troppo-text-primary);
  margin-bottom: 0.5rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.nbn-avcid-help-title::before {
  content: "ℹ️";
  font-size: 1.25rem;
}

.nbn-avcid-help-text {
  color: var(--troppo-text-secondary);
  font-size: 0.875rem;
  line-height: 1.6;
}

/* ==========================================
   LOADING OVERLAY
   ========================================== */

.nbn-progress-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(15, 15, 30, 0.95);
  backdrop-filter: blur(30px) saturate(180%);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 999;
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.nbn-progress-overlay.active {
  opacity: 1;
  visibility: visible;
}

.nbn-progress-container {
  text-align: center;
  transform: scale(0.9);
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.nbn-progress-overlay.active .nbn-progress-container {
  transform: scale(1);
}

/* Enhanced Spinner */
.nbn-progress-spinner {
  width: 120px;
  height: 120px;
  margin: 0 auto 2rem;
  position: relative;
}

.nbn-progress-spinner .troppo-ring {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  border: 4px solid transparent;
}

.nbn-progress-spinner .troppo-ring:nth-child(1) {
  border-top-color: var(--troppo-coral);
  animation: troppoSpin 1.5s linear infinite;
}

.nbn-progress-spinner .troppo-ring:nth-child(2) {
  width: 80%;
  height: 80%;
  top: 10%;
  left: 10%;
  border-right-color: var(--troppo-lagoon);
  animation: troppoSpin 1s linear infinite reverse;
}

.nbn-progress-spinner .troppo-ring:nth-child(3) {
  width: 60%;
  height: 60%;
  top: 20%;
  left: 20%;
  border-bottom-color: var(--troppo-mango);
  animation: troppoSpin 0.75s linear infinite;
}

.nbn-progress-title {
  font-size: 2rem;
  font-weight: 800;
  color: var(--troppo-text-primary);
  margin-bottom: 1rem;
  background: var(--troppo-gradient-sunset);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.nbn-progress-message {
  font-size: 1.25rem;
  color: var(--troppo-text-secondary);
}

/* ==========================================
   RESPONSIVE DESIGN
   ========================================== */

@media (max-width: 1024px) {

  .nbn-flow-with-cart {
    grid-template-columns: 1fr;
  }

  .nbn-cart-summary {
    position: static;
    order: -1;
    margin-bottom: 2rem;
  }
}

@media (max-width: 768px) {

  .nbn-flow-steps {
    flex-wrap: wrap;
    gap: 1rem;
  }

  .nbn-flow-step {
    flex: 0 0 calc(33.333% - 1rem);
  }

  .nbn-flow-step-label {
    font-size: 0.75rem;
  }

  .nbn-hardware-grid,
  .nbn-voip-options {
    grid-template-columns: 1fr;
  }

  .nbn-flow-navigation {
    flex-direction: column;
    gap: 1rem;
  }

  .nbn-flow-nav-btn {
    width: 100%;
    justify-content: center;
  }
}

/* ==========================================
   CHECKOUT STEP SPECIFIC
   ========================================== */

.nbn-checkout-summary {
  background: rgba(26, 26, 46, 0.8);
  backdrop-filter: blur(20px);
  border: 1px solid var(--troppo-glass-border);
  border-radius: var(--troppo-radius-lg);
  padding: 3rem;
  margin-bottom: 3rem;
}

.nbn-checkout-title {
  font-size: 2.5rem;
  font-weight: 900;
  color: var(--troppo-text-primary);
  margin-bottom: 2rem;
  text-align: center;
  background: var(--troppo-gradient-sunset);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* Success Animation */
.nbn-checkout-success {
  text-align: center;
  padding: 4rem 2rem;
}

.nbn-success-icon {
  width: 120px;
  height: 120px;
  margin: 0 auto 2rem;
  background: var(--troppo-gradient-lagoon);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: troppoSuccessBounce 0.6s ease-out;
}

@keyframes troppoSuccessBounce {

  0% {
    transform: scale(0);
    opacity: 0;
  }

  50% {
    transform: scale(1.2);
  }

  100% {
    transform: scale(1);
    opacity: 1;
  }
}

.nbn-success-icon svg {
  width: 60px;
  height: 60px;
  stroke: white;
  stroke-width: 4;
  fill: none;
  stroke-dasharray: 100;
  stroke-dashoffset: 100;
  animation: troppoCheckDraw 0.8s ease-out 0.3s forwards;
}

@keyframes troppoCheckDraw {

  to {
    stroke-dashoffset: 0;
  }
}

/* ==========================================
   CONSOLIDATED CSS FIXES
   ========================================== */

/* ==========================================
   1440px SCREEN FIX - from product-flow-1440-fix.css
   Fixes scroll arrows not showing on 1440x900 screens
   ========================================== */

/* Fix for 1440x900 screens - treat as medium-large, not large */
@media (min-width: 1400px) and (max-width: 1440px) {

  /* Force 4 cards instead of 5 for 1440px screens */
  .nbn-plan-card {
    width: calc(25% - 22.5px) !important; /* 4 cards like 1200-1399px range */
    min-width: 320px !important; /* Ensure minimum width */
  }

  /* Ensure container allows scrolling */
  .nbn-plans-container {
    overflow-x: auto !important; /* Change from hidden to auto */
    padding: 20px 60px; /* Add more padding for arrows */
  }

  /* Force arrows to be visible */
  .nbn-carousel-arrow {
    display: flex !important;
    opacity: 1 !important;
    visibility: visible !important;
  }

  /* Adjust arrow positioning for better visibility */
  .nbn-carousel-prev {
    left: 15px;
  }

  .nbn-carousel-next {
    right: 15px;
  }
}

/* Alternative approach: Force arrows based on plan count */
@media (min-width: 992px) {

  /* If there are more than 4 plans, always show arrows on desktop */
  .nbn-plans-carousel-wrapper:has(.nbn-plan-card:nth-child(5))
    .nbn-carousel-arrow {
    display: flex !important;
  }
}

/* Ensure arrows work properly on all desktop sizes */
@media (min-width: 992px) {

  /* Desktop: always enable horizontal scrolling if content overflows */
  .nbn-plans-container {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* Hide scrollbar but keep functionality */
  .nbn-plans-container::-webkit-scrollbar {
    display: none;
  }

  .nbn-plans-container {
    -ms-overflow-style: none;
    scrollbar-width: none;
  }
}

/* Fix arrow visibility detection for edge cases */
.nbn-plans-carousel-wrapper {
  position: relative;
}

/* Force arrows visible when there's potential overflow */
@media (min-width: 1200px) {
        .nbn-plans-carousel-wrapper .nbn-carousel-arrow {
            /* Always show on desktop if JavaScript hasn't loaded yet */
            display: flex;
        }

        /* Let JavaScript hide them if truly not needed */
        .nbn-plans-carousel-wrapper.no-scroll-needed .nbn-carousel-arrow {
            display: none;
        }
    }

    /* Specific fix for common screen resolutions */
    @media (width: 1440px), (width: 1366px), (width: 1280px) {
        .nbn-plan-card {
            width: calc(25% - 22.5px) !important; /* Force 4 cards */
        }

        .nbn-carousel-arrow {
            display: flex !important;
            cursor: pointer !important;
            pointer-events: auto !important;
        }
    }

    /* ==========================================
   LAYOUT SPACING FIX - from layout-spacing-fix.css
   Product flow specific spacing and container fixes
   ========================================== */

    /* Fix product flow container spacing */
    .nbn-product-flow-container .nbn-step-panel {
        margin-top: 1rem !important; /* Reduced spacing */
        margin-bottom: 1rem !important;
    }

    /* Fix plans container spacing */
    .nbn-step-content {
        padding-top: 1rem !important;
        padding-bottom: 1rem !important;
        margin: 0 !important;
    }

    /* Fix step transitions to reduce gap */
    .nbn-step-section {
        margin-bottom: 1.5rem !important; /* Reduced from default */
        padding: 1rem 0 !important;
    }

    /* Specific fix for plans step in product flow */
    .nbn-step-section[data-step='2'] {
        margin-top: 0 !important;
        padding-top: 0.5rem !important;
    }

    /* Fix for plans display within product flow */
    .nbn-product-flow-container .nbn-plans-display {
        margin-top: 0 !important;
        padding-top: 0 !important;
    }

    /* Ensure proper container display - maintain flex for horizontal scroll but fix spacing */
    .nbn-product-flow-container .nbn-plans-container {
        display: block !important; /* Keep for horizontal scroll */
        margin: 0 auto !important;
        padding: 0 !important;
        max-width: 100% !important;
    }

    /* Keep grid as flex for horizontal scroll but ensure proper alignment */
    .nbn-product-flow-container .nbn-plans-grid {
        display: flex !important;
        flex-wrap: nowrap !important;
        overflow-x: auto !important;
        gap: 1.5rem !important; /* Consistent gap */
        padding: 0 2rem !important; /* Side padding for arrows */
        margin: 0 0 2rem 0 !important; /* Bottom margin only */
        align-items: stretch !important;
    }

    /* Fix individual plan card spacing */
    .nbn-product-flow-container .nbn-plan-card {
        flex: 0 0 320px !important; /* Slightly smaller for better fit */
        min-width: 320px !important;
        max-width: 320px !important;
        margin: 0 !important;
        padding: 0 !important;
    }

    /* Fix for mobile responsive */
    @media (max-width: 768px) {
        .nbn-product-flow-container .nbn-plan-card {
            flex: 0 0 calc(100vw - 3rem) !important;
            min-width: calc(100vw - 3rem) !important;
            max-width: calc(100vw - 3rem) !important;
        }

        .nbn-product-flow-container .nbn-plans-grid {
            padding: 0 1.5rem !important;
        }
    }

    /* Fix any overflow issues causing extra height */
    .nbn-product-flow-container {
        min-height: auto !important; /* Remove forced min-height from 100vh */
        height: auto !important; /* Ensure natural height */
    }

    /* Fix any step containers that might be adding unnecessary height */
    .nbn-step-panel,
    .nbn-step-section {
        min-height: auto !important;
        height: auto !important;
    }

    /* Fix for content sections that might be adding space */
    .entry-content .nbn-product-flow-container,
    .wp-block .nbn-product-flow-container {
        margin: 0 !important;
        padding: 0 !important;
    }

    /* Additional fix for WordPress theme conflicts */
    .kadence-content .nbn-product-flow-container {
        margin-top: 0 !important;
        margin-bottom: 0 !important;
    }

    /* Fix for any wrapper elements adding space */
    .nbn-plugin-wrapper {
        margin: 0 !important;
        padding: 0 !important;
    }

    /* ==========================================
   ARROW AND PLAN STYLING FIX - from wildly-comprehensive-fix.css
   Product flow arrows, plan cards, and visual enhancements
   ========================================== */

    /* Fix plan card width to prevent wrapping */
    .nbn-plan-card {
        flex: 0 0 380px !important;
        min-width: 380px !important;
        max-width: 380px !important;
        width: 380px !important;
    }

    /* Fix arrow colors to yellow/orange */
    .nbn-carousel-arrow,
    .nbn-scroll-arrow {
        background: rgba(255, 142, 83, 0.1) !important;
        border: 2px solid #ff8e53 !important;
    }

    .nbn-carousel-arrow:hover,
    .nbn-scroll-arrow:hover {
        background: rgba(255, 142, 83, 0.2) !important;
        border-color: #ffd93d !important;
    }

    .nbn-carousel-arrow::before {
        border-color: #ff8e53 !important;
    }

    .nbn-carousel-arrow:hover::before {
        border-color: #ffd93d !important;
    }

    /* Ensure proper spacing in plans grid */
    .nbn-plans-grid {
        gap: 1.5rem !important;
    }

    /* Fix button styling */
    .nbn-select-plan {
        background: linear-gradient(135deg, #ff8e53 0%, #ffd93d 100%) !important;
        color: white !important;
        font-weight: 700 !important;
        text-transform: uppercase !important;
        padding: 0.875rem 2rem !important;
        border-radius: 50px !important;
        border: none !important;
        font-size: 0.875rem !important;
    }

    .nbn-select-plan:hover {
        transform: translateY(-2px) !important;
        box-shadow: 0 6px 20px rgba(255, 142, 83, 0.4) !important;
    }

    /* Responsive adjustments */
    @media (min-width: 1440px) {
        .nbn-plan-card {
            flex: 0 0 400px !important;
            min-width: 400px !important;
            max-width: 400px !important;
            width: 400px !important;
        }
    }

    @media (max-width: 1200px) {
        .nbn-plan-card {
            flex: 0 0 350px !important;
            min-width: 350px !important;
            max-width: 350px !important;
            width: 350px !important;
        }
    }

    /* Fix z-index issues */
    .nbn-carousel-arrow,
    .nbn-scroll-arrow {
        z-index: 100 !important;
    }
}
