/* Reusable UI components */

.icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  flex-shrink: 0;
  vertical-align: -0.125em;
}

/* =========================================================
   GLASS PANELS
   ========================================================= */
.glass-panel {
  position: relative;
  background: var(--glass-bg);
  backdrop-filter: blur(22px) saturate(140%);
  -webkit-backdrop-filter: blur(22px) saturate(140%);
  border: 1px solid var(--accent-line);
  border-radius: var(--radius-lg);
  padding: 56px;
  box-shadow: 0 30px 90px var(--accent-glow);
  overflow: hidden;
}
.glass-panel::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(165deg, var(--glass-sheen) 0%, transparent 35%);
  pointer-events: none;
}
.glass-panel::after {
  content: "";
  position: absolute;
  top: 0; left: 6%; right: 6%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--border-strong), transparent);
}
@media (max-width: 700px) { .glass-panel { padding: 32px 24px; } }

.section-note {
  color: var(--text-faint);
  font-size: 0.86rem;
  line-height: 1.5;
}
.section-note--centered {
  max-width: 56ch;
  margin: 28px auto 0;
  text-align: center;
}
.section-note a {
  border-bottom: 1px solid var(--border-strong);
  transition: border-color 0.2s ease;
}
.section-note a:hover {
  border-bottom-color: var(--accent-line);
}

.meta-label {
  color: var(--text-faint);
  font-family: var(--font-mono);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* =========================================================
   section trensitions
   ========================================================= */
.section-divider {
  /* Mniejsza przerwa; grafika może wystawać poza tę przestrzeń. */
  --divider-height: clamp(42px, 6vw, 85px);
  --divider-width: clamp(140px, 24vw, 300px);
  --divider-left: auto;
  --divider-right: clamp(24px, 8vw, 140px);
  --divider-rotation: 0deg;
  --divider-opacity: 0.08;
  --art-accent: color-mix(in srgb, var(--accent-bright) 62%, transparent);
  position: relative;
  z-index: 1;
  height: var(--divider-height);
  color: var(--text);
  opacity: var(--divider-opacity);
  pointer-events: none;
}

/* Sam SVG jest skalowany niezależnie od zawartości sekcji powyżej i poniżej. */
.section-divider__art {
  position: absolute;
  top: 40%;
  left: var(--divider-left);
  right: var(--divider-right);
  display: block;
  width: var(--divider-width);
  height: auto;
  overflow: visible;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
  transform: translateY(-50%) rotate(var(--divider-rotation));
}

/* Indywidualne ustawienia dla każdej sekcji */
.section-divider--pendulum {
  --divider-width: clamp(140px, 18vw, 250px);
  --divider-right: clamp(24px, 10vw, 160px);
  --divider-rotation: -8deg;
  --divider-opacity: 0.3;
}

.section-divider--grid {
  --divider-width: clamp(170px, 25vw, 300px);
  --divider-left: clamp(-120px, -5vw, -40px);
  --divider-right: auto;
}

.section-divider--sine {
  --divider-height: clamp(36px, 5vw, 70px);
  --divider-width: clamp(280px, 42vw, 580px);
  --divider-right: clamp(-120px, -4vw, -30px);
}

.section-divider--euler {
  --divider-width: clamp(170px, 24vw, 280px);
  --divider-right: clamp(-80px, -3vw, -24px);
}

.section-divider--integral {
  --divider-height: clamp(55px, 8vw, 110px);
  --divider-width: clamp(110px, 16vw, 180px);
  --divider-left: clamp(-60px, -3vw, -20px);
  --divider-right: auto;
}

@media (max-width: 700px) {
  .section-divider {
    --divider-opacity: 0.06;
  }

  .section-divider--pendulum {
    --divider-right: 18px;
  }

  .section-divider--sine {
    --divider-width: 340px;
    --divider-right: -60px;
  }
}

/* =========================================================
   BUTTONS
   ========================================================= */
.btn {
  display: inline-flex; align-items: center; gap: 12px;
  position: relative; overflow: hidden;
  background:
    linear-gradient(135deg, rgba(255,255,255,0.12), transparent 60%),
    linear-gradient(115deg, rgba(140,42,56,0.22), rgba(255,255,255,0.045) 80%);
  color: var(--text);
  font-family: var(--font-display); font-weight: 600; font-size: 0.95rem;
  padding: 15px 20px; border-radius: var(--radius-md);
  border: 1px solid var(--accent-line); cursor: pointer;
  backdrop-filter: blur(14px) saturate(130%);
  -webkit-backdrop-filter: blur(14px) saturate(130%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.16), 0 10px 28px var(--accent-glow);
  transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}
.btn:hover {
  border-color: var(--accent-bright);
  transform: translateY(-2px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.22), 0 14px 32px var(--accent-glow);
}
.btn .icon {
  color: var(--accent-bright);
  font-size: 0.9em;
  transition: transform 0.15s ease;
}
.btn:hover .icon { transform: translateX(3px); }
.btn-primary {
  background: var(--accent);
  color: #FBEFEF;
  box-shadow: 0 8px 24px var(--accent-glow);
}
.btn-primary .icon { color: currentColor; }
.btn-primary:hover { background: var(--accent-bright); }

.btn-large { padding: 16px 32px; font-size: 1rem; }
.btn-nav { padding: 9px 18px; font-size: 0.85rem; }
