/* ── Flash Toast Notifications ─────────────────────────────────────────── */
.gnc-toast-container {
  position: fixed;
  top: 80px;       /* clear the sticky nav bar */
  right: 20px;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 320px;
  max-width: min(420px, calc(100vw - 40px));
  pointer-events: none; /* allow clicks through the gap between toasts */
}

.gnc-toast {
  pointer-events: all;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 8px 32px rgba(0,0,0,.14), 0 2px 8px rgba(0,0,0,.08);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  /* Entrance: slide in from the right */
  opacity: 0;
  transform: translateX(calc(100% + 24px));
  transition: opacity .3s ease, transform .3s cubic-bezier(.22,.68,0,1.2);
}
.gnc-toast.gnc-toast-visible {
  opacity: 1;
  transform: translateX(0);
}
/* Exit: fade + slide right */
.gnc-toast.gnc-toast-hiding {
  opacity: 0;
  transform: translateX(calc(100% + 24px));
  transition: opacity .25s ease, transform .25s ease;
}

/* Coloured left border per type */
.gnc-toast-success { border-left: 5px solid #28a745; }
.gnc-toast-danger  { border-left: 5px solid var(--accent-color, #c93d80); }
.gnc-toast-warning { border-left: 5px solid #f4b400; }
.gnc-toast-info    { border-left: 5px solid #17a2b8; }

.gnc-toast-body {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 16px 10px;
}

.gnc-toast-icon {
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
}
.gnc-toast-success .gnc-toast-icon { background: #d4edda; color: #155724; }
.gnc-toast-danger  .gnc-toast-icon { background: #fde8f1; color: var(--accent-color, #c93d80); }
.gnc-toast-warning .gnc-toast-icon { background: #fff3cd; color: #856404; }
.gnc-toast-info    .gnc-toast-icon { background: #d1ecf1; color: #0c5460; }

.gnc-toast-text {
  flex: 1;
  min-width: 0;
}
.gnc-toast-title {
  font-weight: 700;
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  margin-bottom: 2px;
  color: #333;
}
.gnc-toast-message {
  font-size: .9rem;
  color: #444;
  line-height: 1.45;
  word-break: break-word;
}

.gnc-toast-close {
  flex-shrink: 0;
  background: none;
  border: none;
  cursor: pointer;
  color: #888;
  font-size: 1.1rem;
  padding: 0 4px;
  line-height: 1;
  align-self: flex-start;
  margin-top: 2px;
  transition: color .15s;
}
.gnc-toast-close:hover { color: #222; }

/* Shrinking progress bar at the bottom */
.gnc-toast-progress {
  height: 3px;
  margin: 0 16px 12px;
  border-radius: 2px;
  overflow: hidden;
  background: rgba(0,0,0,.07);
}
.gnc-toast-bar {
  height: 100%;
  border-radius: 2px;
  width: 100%;
  transform-origin: left;
  /* Duration set inline via JS so each toast can have a custom timeout */
  animation: gnc-toast-shrink linear forwards;
}
.gnc-toast-success .gnc-toast-bar { background: #28a745; }
.gnc-toast-danger  .gnc-toast-bar { background: var(--accent-color, #c93d80); }
.gnc-toast-warning .gnc-toast-bar { background: #f4b400; }
.gnc-toast-info    .gnc-toast-bar { background: #17a2b8; }

@keyframes gnc-toast-shrink {
  from { transform: scaleX(1); }
  to   { transform: scaleX(0); }
}

/* Stack nicely on mobile */
@media (max-width: 480px) {
  .gnc-toast-container {
    top: auto;
    bottom: 20px;
    right: 12px;
    left: 12px;
    min-width: 0;
    max-width: none;
  }
  .gnc-toast {
    transform: translateY(calc(100% + 20px));
  }
  .gnc-toast.gnc-toast-visible {
    transform: translateY(0);
  }
  .gnc-toast.gnc-toast-hiding {
    transform: translateY(calc(100% + 20px));
  }
}


.gnc-inner-banner { background-size: cover; background-position: center; }

/* Chat widget, restyled to the template's accent palette */
#gncChatBubble {
  position: fixed; bottom: 24px; right: 24px; z-index: 1080;
  width: 60px; height: 60px; border-radius: 50%;
  background: var(--accent-color); color: #fff; display: flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 20px rgba(0,0,0,.2); cursor: pointer; font-size: 1.5rem; border: none;
}
#gncChatPanel {
  position: fixed; bottom: 96px; right: 24px; z-index: 1080;
  width: 340px; max-height: 460px; background: #fff; border-radius: 14px;
  box-shadow: 0 10px 30px rgba(0,0,0,.25); display: none; flex-direction: column; overflow: hidden;
}
#gncChatPanel.open { display: flex; }
.gnc-chat-head { background: var(--accent-color-1); color: #fff; padding: 10px 14px; }
#gncChatMessages { flex: 1; overflow-y: auto; padding: 12px; background: #faf7f9; }
.chat-msg { margin-bottom: 8px; max-width: 85%; padding: 8px 12px; border-radius: 12px; font-size: .9rem; font-family: var(--font-2); }
.chat-msg.mine { background: var(--accent-color); color: #fff; margin-left: auto; }
.chat-msg.theirs { background: #fff; border: 1px solid #e2e2e2; }

/* Simple star-rating input used on the testimonials form */
.star-input i { cursor: pointer; color: var(--gray-color); }
.star-input i.active, .star-input i.bi-star-fill { color: #f4b400; }

/* Pricing / fee badge used on accommodation + course cards */
.gnc-price-badge { background: var(--accent-color); color: #fff; display:inline-block; padding: .35rem .9rem; border-radius: 30px; font-family: var(--font-1); font-weight: 700; }

/* Generic small print-button used on receipts/certificates (outside the template scope) */
.gnc-print-btn { background: var(--accent-color); color:#fff; border:none; padding:10px 24px; border-radius:6px; font-family: var(--font-2); }