/* Fonty ładowane z Google Fonts w <head>. */
html { scroll-behavior: smooth; }
body { text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }

/* Skalowanie nagłówków display */
.font-display { letter-spacing: -0.015em; }
.font-display.font-semibold,
.font-display.font-bold   { font-optical-sizing: auto; }

/* Scrollbar w stylu oceanu */
html { scrollbar-width: thin; scrollbar-color: #3e96ba #eef7fb; }
::-webkit-scrollbar        { width: 10px; height: 10px; }
::-webkit-scrollbar-track  { background: #eef7fb; }
::-webkit-scrollbar-thumb  { background: linear-gradient(180deg, #3e96ba, #155f82); border-radius: 8px; }

/* Aktywna pozycja w menu języka */
.lang-option.is-active {
  background: linear-gradient(135deg, #ff7f36, #ef6415);
  color: #fff;
}

/* Hover na kartach kursów: lekkie uniesienie + cień */
.course-card { will-change: transform; }
.course-card:hover { transform: translateY(-4px); }

/* Efekt "ghost" gradientu w ramce sekcji bookingu */
#booking::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(1200px 600px at 10% -10%, rgba(255,127,54,0.12), transparent 60%),
    radial-gradient(900px 500px at 90% 110%, rgba(62,150,186,0.15), transparent 60%);
  pointer-events: none;
}

/* Fale animowane w tle nagłówków sekcji — subtelne */
@keyframes waveShift {
  0%   { transform: translateX(0);   }
  50%  { transform: translateX(-3%); }
  100% { transform: translateX(0);   }
}
.wave-bg { animation: waveShift 14s ease-in-out infinite; }

/* Akcent animacji pulsującej kropki (w hero) — wbudowana Tailwind animate-pulse jest OK;
   tu tylko dopinamy kolor cienia */
.pulse-dot { box-shadow: 0 0 0 0 rgba(239, 100, 21, 0.6); animation: pulse-ring 2.2s infinite; }
@keyframes pulse-ring {
  0%   { box-shadow: 0 0 0 0 rgba(239,100,21,0.6); }
  70%  { box-shadow: 0 0 0 10px rgba(239,100,21,0); }
  100% { box-shadow: 0 0 0 0 rgba(239,100,21,0); }
}

/* Hover na spotach — delikatne przesunięcie w prawo */
.spot-item { transition: transform .3s ease; }
.spot-item:hover { transform: translateX(4px); }

/* Modal — lekki fade-in po otwarciu */
#bookingModal.flex > .relative { animation: scaleIn .22s ease-out; }
@keyframes scaleIn { from { opacity: 0; transform: scale(.96) translateY(8px); } to { opacity: 1; transform: none; } }

/* Druk / dostępność */
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

/* Zapewnienie kontrastu na YouTube iframe */
.video-card iframe { display: block; }

/* Drobne poprawki dla telefonów */
@media (max-width: 640px) {
  section { padding-top: 4.5rem; padding-bottom: 4.5rem; }
  h1, h2 { word-break: break-word; }
}
