
body {
  margin:0;
  background:#000;
  font-family:'Quicksand', sans-serif;
  color:white;
}

header {
  padding:30px 20px;
  display:flex;
  justify-content:center;
  background:#0e0e0e;
}

.logo {
  width:260px;
}

.hero {
  text-align:center;
  padding:100px 20px;
}

.btn {
  display:inline-block;
  margin:10px;
  padding:12px 26px;
  border:1px solid white;
  color:white;
  text-decoration:none;
  border-radius:4px;
}

.gallery {
  column-count:3;
  column-gap:10px;
  padding:20px;
}

.gallery img {
  width:100%;
  margin-bottom:10px;
  opacity:0;
  transform:translateY(20px);
  transition:0.6s ease;
}

.gallery img.visible {
  opacity:1;
  transform:translateY(0);
}



/* --- Przycisk zamykania karuzeli --- */
.close-btn {
    position: fixed;
    top: 15px;
    right: 20px;
    background: rgba(0,0,0,0.7);
    color: white;
    font-size: 28px;
    border: none;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    cursor: pointer;
    z-index: 9999;
}
.close-btn:hover {
    background: rgba(0,0,0,0.9);
}

/* --- Przycisk "Powrót do góry" --- */
#scrollTopBtn {
    position: fixed;
    bottom: 30px;
    right: 30px;
    background-color: #333;
    color: white;
    border: none;
    border-radius: 25px;
    padding: 10px 20px;
    font-size: 14px;
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: 10000;
}
#scrollTopBtn.show {
    opacity: 1;
}
#scrollTopBtn:hover {
    background-color: #555;
}



.close-btn {
  position: fixed;
  top: 15px;
  right: 20px;
  background: rgba(0,0,0,0.7);
  color: white;
  font-size: 28px;
  border: none;
  border-radius: 50%;
  width: 40px;
  height: 40px;
  cursor: pointer;
  z-index: 9999;
  transition: background 0.3s ease;
}
.close-btn:hover {
  background: rgba(0,0,0,0.9);
}

#scrollTopBtn {
  position: fixed;
  bottom: 30px;
  right: 30px;
  background-color: #333;
  color: white;
  border: none;
  border-radius: 25px;
  padding: 10px 20px;
  font-size: 14px;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.3s ease;
  z-index: 10000;
}
#scrollTopBtn.show {
  opacity: 1;
}
#scrollTopBtn:hover {
  background-color: #555;
}
/* O mnie – pełna szerokość na desktopie */
@media (min-width: 992px) {
  .about.container {
    max-width: 100% !important;
    width: 100% !important;
    padding-left: 3rem;   /* dodajemy marginesy, żeby tekst nie był przy samej krawędzi */
    padding-right: 3rem;
  }
}
.about p {
  max-width: 900px;   /* idealna szerokość linijek tekstu */
  margin: 0 auto;     /* centracja tekstu */
  line-height: 1.7;   /* lepsza czytelność */
  font-size: 1.05rem; /* opcjonalne, lekko większa czcionka */
}
.about p,
.about h2,
.about .about-btn {
  max-width: min(100ch, 85%);
  margin-left: auto;
  margin-right: auto;
  line-height: 1.7;
  text-wrap: balance;
}
/* ========== O mnie — wariant premium (ramka + tekst responsywny) ========== */

/* szerokość i responsywność całej ramki „o mnie” */
.about {
  max-width: min(90rem, 90%);
  margin-left: auto;
  margin-right: auto;
  padding: 2rem 0;
}

/* responsywna szerokość treści wewnętrznej */
.about p,
.about h2,
.about .about-btn {
  max-width: min(100ch, 85%);
  margin-left: auto;
  margin-right: auto;
  line-height: 1.7;
  text-wrap: balance;
}
/* ========== O mnie — Idealny vertical rhythm ========== */

/* 1) podstawowe zmienne rytmu i skali */
:root {
  /* rytm bazowy (w px) — możesz dostosować: 18px~22px są wygodne */
  --rhythm: 20px;

  /* modular scale dla nagłówków (stosunek) */
  --ms-ratio: 1.25; /* 1.25 = umiarkowana skala */
  --container-max: 90rem; /* maks szerokości „ramki” */
}

/* 3) kontener sekcji */
.about {
  max-width: min(var(--container-max), 92%);
  margin-inline: auto;
  padding-block-start: calc(var(--rhythm) * 2);   /* góra */
  padding-block-end: calc(var(--rhythm) * 2.5);   /* dół */
  box-sizing: border-box;
}

/* 4) karta wewnętrzna (jeżeli istnieje .about-card) */
.about .about-card {
  background: #fff;
  padding: calc(var(--rhythm) * 1.8) calc(var(--rhythm) * 2.4);
  border-radius: calc(var(--rhythm) * 0.7);
  box-shadow: 0 calc(var(--rhythm) * 0.6) calc(var(--rhythm) * 2.2) rgba(8,15,30,0.10);
  color: #000;
}

/* 5) typografia zgodna z rytmem */
.about h2 {
  margin: 0 0 calc(var(--rhythm) * 0.6) 0;
  line-height: 1.05;
  font-weight: 700;
  font-size: calc(var(--rhythm) * var(--ms-ratio) * 1.8);
}

/* akapity — idealny rytm pionowy dzięki stałym mnożnikom rytmu */
.about p {
  margin: 0 0 calc(var(--rhythm) * 1) 0;
  font-size: calc(var(--rhythm) * 0.95);
  line-height: 1.7;
}

/* przycisk */
.about .about-btn {
  margin-top: calc(var(--rhythm) * 0.8);
}

/* 6) responsywność - rytm mniejszy na mobile */
@media (max-width: 767px) {
  :root { --rhythm: 18px; }
  .about .about-card {
    padding: calc(var(--rhythm) * 1.2);
  }
}

/* 7) duże ekrany: większy rytm */
@media (min-width: 1400px) {
  :root { --rhythm: 22px; }
  .about {
    padding-block-start: calc(var(--rhythm) * 2.4);
    padding-block-end: calc(var(--rhythm) * 3);
  }
  .about .about-card {
    padding: calc(var(--rhythm) * 2.1) calc(var(--rhythm) * 2.6);
  }
}

/* 8) estetyczny fix — usuwa margines pod ostatnim akapitem */
.about .about-card p:last-child {
  margin-bottom: 0;
}
/* ========== O mnie — Korekta typografii po screenie ========== */

:root {
  --rhythm: 18px;     /* było 20–22, teraz mniejszy rytm = mniejsza czcionka */
  --ms-ratio: 1.22;   /* delikatnie mniejsza skala nagłówków */
  --container-max: 80rem; /* optymalna szerokość sekcji na Twoim layoucie */
}

/* Sekcja */
.about {
  max-width: min(var(--container-max), 92%);
  margin-inline: auto;
  padding-block-start: calc(var(--rhythm) * 2);
  padding-block-end: calc(var(--rhythm) * 2.5);
}

/* Nagłówek */
.about h2 {
  font-size: calc(var(--rhythm) * var(--ms-ratio) * 1.7); /* było 1.8 */
  line-height: 1.1;
  margin-bottom: calc(var(--rhythm) * 0.7);
}

/* Akapity */
.about p {
  font-size: calc(var(--rhythm) * 0.9); /* było ~0.95 – zmniejszyłem o ~10% */
  line-height: 1.65;                    /* delikatnie ciaśniej */
  margin-bottom: calc(var(--rhythm) * 0.9);
  text-align: center;                   /* pełne centrujące wyrównanie */
}

/* Przycisk też centrowany rytmicznie */
.about .about-btn {
  margin-top: calc(var(--rhythm) * 1);
  text-align: center;
}

/* Mobile dopracowany */
@media (max-width: 767px) {
  :root { --rhythm: 16px; }
  .about { padding: calc(var(--rhythm) * 1.5) 0; }
}
/* O mnie: pełne wyśrodkowanie sekcji, bez przesunięcia od .container */
.about.container {
  max-width: 100%;          /* usuwa limit szerokości narzucony przez .container */
  width: 100%;              /* sekcja zajmuje pełną szerokość */
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}

/* Wyśrodkowanie treści wewnętrznej */
.about h2,
.about p,
.about .about-btn {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}
.no-break {
  white-space: nowrap;
}
/* No-break helper — silniejsza wersja (ustawia też inline-block, żeby zachować nowrap) */
.no-break {
  white-space: nowrap !important;
  display: inline !important; /* inline zamiast inline-block — mniej wpływu na rozmieszczenie */
}

/* Dodatkowe zabezpieczenia: upewniamy się, że tekst nie będzie łamany ani dzielony */
.about p {
  word-break: normal !important;
  overflow-wrap: normal !important;
  -webkit-hyphens: none !important;
  hyphens: none !important;
}
/* więcej miejsca w wierszu — zapobiega niechcianym przerzutom */
.about p,
.about h2,
.about .about-btn {
  max-width: min(110ch, 90%); /* zwiększone z 100ch/85% */
  margin-left: auto;
  margin-right: auto;
}
/* ==== No-break: zapewnia, że oznaczone frazy nie będą łamane ==== */
.no-break {
  white-space: nowrap !important;
  word-break: keep-all !important;
  overflow-wrap: normal !important;
  -webkit-hyphens: none !important;
  hyphens: none !important;
  display: inline-flex !important; /* traktuje frazę jako jedną jednostkę */
}

/* ==== Wyłącz balansowanie/zaawansowane łamanie tylko w sekcji O mnie ==== */
.about p {
  text-align: center !important;
  text-wrap: normal !important;
  -webkit-text-wrap: normal !important;
  word-break: normal !important;
  overflow-wrap: normal !important;
  hyphens: none !important;
}

/* Dodatkowo: zapewniamy trochę więcej miejsca w wierszu (opcjonalne) */
.about p,
.about h2,
.about .about-btn {
  max-width: min(110ch, 90%);
  margin-left: auto;
  margin-right: auto;
}
/* ===== Ostateczne zabezpieczenie przed łamaniem dla sekcji O mnie ===== */
.about p {
  /* wyłącz inteligentne balansowanie i dzielenie słów */
  text-wrap: normal !important;
  -webkit-text-wrap: normal !important;
  hyphens: none !important;
  -webkit-hyphens: none !important;
  word-break: normal !important;
  overflow-wrap: normal !important;

  /* wyśrodkuj tekst, ale nie zmieniaj układu elementów */
  text-align: center !important;
}

/* wymuszamy, by konkretne frazy były traktowane jako niełamliwa paczka */
.about span.no-break {
  white-space: nowrap !important;
  display: inline-block !important; /* albo inline-flex - działa podobnie */
  word-break: keep-all !important;
  overflow-wrap: normal !important;
}
/* ============== FLOATING SOCIAL ICONS (brand colors) ============== */

.floating-socials {
  display: flex;
  justify-content: center;
  gap: 18px;
  margin-top: 25px;
}

.float-icon {
  width: 60px;
  height: 60px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  text-decoration: none;
  box-shadow: 0 10px 28px rgba(0,0,0,0.15);
  transition: 0.25s ease;
}

/* Ikony wewnątrz — ostre, bez rozmycia */
.float-icon svg {
  width: 26px;
  height: 26px;
  shape-rendering: geometricPrecision;
}

/* -------- Kolory marek -------- */

/* Instagram gradient */
.float-icon.insta {
  background: radial-gradient(circle at 30% 10%, #fdf497 0%, #fdf497 5%, #fd5949 40%, #d6249f 70%, #285AEB 100%);
}

/* Facebook */
.float-icon.fb {
  background: #1877F2;
}

/* Etsy */
.float-icon.etsy {
  background: #F16521;
}

/* -------- Hover -------- */
.float-icon:hover {
  transform: translateY(-5px) scale(1.07);
  box-shadow: 0 16px 38px rgba(0,0,0,0.25);
}

/* -------- Mobile -------- */
@media (max-width: 600px) {
  .float-icon {
    width: 48px;
    height: 48px;
  }
  .float-icon svg {
    width: 22px;
    height: 22px;
  }
}
/* ===== Floating brand icons — refined oval style ===== */

.floating-socials {
  display: flex;
  justify-content: center;
  gap: 16px;
  margin-top: 22px;
  z-index: 20;
}

/* Base button: owal poziomy (szerszy niż wysoki) */
.float-icon {
  width: 86px;               /* szerokość (owal) */
  height: 46px;              /* wysokość mniejsza => owal */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;      /* duże zaokrąglenie => owal */
  text-decoration: none;
  box-shadow: 0 10px 28px rgba(0,0,0,0.14);
  transition: transform 220ms cubic-bezier(.2,.9,.2,1), box-shadow 220ms ease;
  cursor: pointer;           /* upewnia, że myszka pokazuje link */
  pointer-events: auto;
  -webkit-font-smoothing: antialiased;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  transform: translateZ(0);  /* poprawia rasteryzację */
}

/* SVG sharpness */
.float-icon svg {
  width: 26px;
  height: 26px;
  shape-rendering: geometricPrecision;
  image-rendering: crisp-edges;
  display: block;
}

/* brand backgrounds (subtle gradients where useful) */
.float-icon.insta {
  background: linear-gradient(135deg, #feda75 0%, #fa7e1e 25%, #d62976 50%, #962fbf 75%, #4f5bd5 100%);
  color: #fff;
}

.float-icon.fb {
  background: linear-gradient(180deg,#1877F2 0%,#166FE5 100%);
  color: #fff;
}

.float-icon.etsy {
  background: linear-gradient(180deg,#F16521 0%,#D85A1E 100%);
  color: #fff;
}

/* hover/focus: tylko translateY (brak scale), żeby uniknąć rozmycia */
.float-icon:hover,
.float-icon:focus {
  transform: translateY(-6px);
  box-shadow: 0 18px 46px rgba(0,0,0,0.22);
  filter: saturate(1.05);
  outline: none;
}

/* focus accessibility */
.float-icon:focus-visible {
  outline: 3px solid rgba(255,255,255,0.18);
  outline-offset: 4px;
}

/* responsive — zmniejsz owal na mobile */
@media (max-width: 640px) {
  .float-icon { width: 70px; height: 40px; }
  .float-icon svg { width: 20px; height: 20px; }
  .floating-socials { gap: 10px; margin-top: 14px; }
}
/* ===== OVERRIDE: naprawa floating icons (z-index + ostrość + brak scale) ===== */

/* upewniamy się, że ikony są nad overlayem i klikalne */
.floating-socials {
  position: relative !important;
  z-index: 9999 !important; /* musi być większe niż .hero-overlay z index 1 */
  pointer-events: auto !important;
}

/* każdy przycisk ma własne pozycjonowanie i wyższy z-index */
.float-icon {
  position: relative !important;
  z-index: 10000 !important;
  pointer-events: auto !important;
  transform: translateZ(0); /* poprawia rasteryzację */
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  will-change: transform;
}

/* SVG: ostre krawędzie, nie skalujemy stroke */
.float-icon svg {
  shape-rendering: geometricPrecision;
  image-rendering: optimizeQuality;
  vector-effect: non-scaling-stroke;
  display: block;
}

/* Wymuszenie tylko translate (bez scale) — zapobiega rozmyciu */
.float-icon:hover,
.float-icon:focus {
  transform: translateY(-6px) !important;
  box-shadow: 0 18px 46px rgba(0,0,0,0.22) !important;
  filter: saturate(1.05) !important;
}

/* Jeśli gdzieś wcześniej był transform scale() — to go nadpisujemy */
.float-icon:hover > svg,
.float-icon:focus > svg {
  transform: none !important;
}

/* accessibility */
.float-icon { cursor: pointer; }
.float-icon:focus-visible { outline: 3px solid rgba(255,255,255,0.14); outline-offset: 4px; }

/* mobilne dopasowanie (opcjonalne) */
@media (max-width: 640px) {
  .float-icon { width: 70px !important; height: 40px !important; }
  .float-icon svg { width: 20px !important; height: 20px !important; }
}
/* ===== Floating brand icons - improved (official-like look) ===== */

.floating-socials {
  display: flex;
  justify-content: center;
  gap: 14px;
  margin-top: 22px;
  z-index: 9999;
}

/* base owalny przycisk */
.float-icon {
  width: 86px;               /* owal szeroki */
  height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  text-decoration: none;
  box-shadow: 0 10px 30px rgba(0,0,0,0.14);
  transition: transform .22s cubic-bezier(.2,.9,.2,1), box-shadow .22s;
  cursor: pointer;
  pointer-events: auto;
  transform: translateZ(0);
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  will-change: transform;
  overflow: hidden;
}

/* make the SVG sharp */
.float-icon svg {
  width: 26px;
  height: 26px;
  display: block;
  shape-rendering: geometricPrecision;
  vector-effect: non-scaling-stroke;
}

/* BRAND BACKGROUNDS */
.float-icon.insta {
  /* Instagram-like gradient */
  background: linear-gradient(135deg, #feda75 0%, #fa7e1e 25%, #d62976 50%, #962fbf 75%, #4f5bd5 100%);
}

.float-icon.fb {
  background: #1877F2; /* facebook blue */
}

.float-icon.etsy {
  background: #F16521; /* etsy orange */
}

/* Hover/focus: only translate (no scale) to avoid blur */
.float-icon:hover,
.float-icon:focus {
  transform: translateY(-6px);
  box-shadow: 0 18px 46px rgba(0,0,0,0.22);
  filter: saturate(1.05);
}

/* Avoid any scale on svg children */
.float-icon:hover svg,
.float-icon:focus svg {
  transform: none !important;
}

/* Focus ring for keyboard users */
.float-icon:focus-visible {
  outline: 3px solid rgba(255,255,255,0.18);
  outline-offset: 4px;
}

/* responsive */
@media (max-width:640px) {
  .float-icon { width: 72px; height: 40px; }
  .float-icon svg { width: 20px; height: 20px; }
  .floating-socials { gap: 10px; margin-top: 14px; }
}
/* === Floating official wordmarks (transparent buttons) === */

.floating-socials {
  display: flex;
  justify-content: center;
  gap: 18px;
  margin-top: 22px;
  z-index: 9999;
}

/* wrapper link: transparent background, owalny look optional */
.float-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 6px 12px;       /* przestrzeń wokół wordmarka */
  border-radius: 999px;    /* miękki owal, ale tło transparentne */
  background: transparent;
  box-shadow: none;        /* brak pełnego tła, możesz dodać subtelny cień jeśli chcesz */
  transition: transform .18s ease, box-shadow .18s ease;
  cursor: pointer;
  text-decoration: none;
  pointer-events: auto;
}

/* obrazki SVG: ostre rendering */
.float-icon img {
  display: block;
  width: auto;
  height: 28px; /* dopasuj wysokość wordmarka */
  shape-rendering: geometricPrecision;
  image-rendering: optimizeQuality;
}

/* hover: delikatne uniesienie i lekki kontrast */
.float-icon:hover,
.float-icon:focus {
  transform: translateY(-4px);
  filter: brightness(1.03) saturate(1.02);
  box-shadow: 0 10px 26px rgba(0,0,0,0.08);
}

/* mobile: mniejsze wordmarki */
@media (max-width: 640px) {
  .float-icon img { height: 22px; }
  .float-icon { padding: 6px 8px; gap: 10px; }
}
/* ===================== ABOUT — Premium dark theme (full-bleed, vertical rhythm) ===================== */

/* Scoped vars for the about section */
.about {
  --about-rhythm: 18px;            /* base rhythm; tweak 16–22 to taste */
  --about-max: 85rem;             /* readable measure cap */
  --about-pad-vertical: calc(var(--about-rhythm) * 2.2);
  --about-pad-horizontal: clamp(1rem, 3.5vw, 6rem);

  box-sizing: border-box;
  background-color: #000 !important;  /* full black background */
  color: #f5f5f5;                      /* light text for contrast */
  padding-block-start: var(--about-pad-vertical);
  padding-block-end: var(--about-pad-vertical);
  padding-inline: var(--about-pad-horizontal);
  margin: 0; /* neutralize container margins for full-bleed */
}

/* If .about also has .container class, force it to visually be full-bleed */
.about.container {
  max-width: 100% !important;
  width: 100% !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* Inner wrapper constrains readable measure */
.about .about-inner,
.about .about-card {
  max-width: min(var(--about-max), 100%);
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}

/* Optional translucent card (use only if you want a subtle panel) */
.about .about-card {
  background: rgba(255,255,255,0.02); /* very subtle highlight on black */
  padding: calc(var(--about-rhythm) * 1.6);
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.04);
  box-shadow: 0 8px 30px rgba(0,0,0,0.5);
}

/* Typography and vertical rhythm */
.about h2 {
  color: #fff;
  margin: 0 0 calc(var(--about-rhythm) * 0.6) 0;
  font-size: clamp(1.6rem, 1.1rem + 2.2vw, 2.4rem);
  line-height: 1.05;
  letter-spacing: -0.02em;
  text-align: center;
}

.about p {
  color: #eaeaea;
  margin: 0 0 calc(var(--about-rhythm) * 1) 0;
  font-size: clamp(1rem, 0.95rem + 0.35vw, 1.06rem);
  line-height: 1.72;
  max-width: min(100ch, 85%);
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

/* Buttons inside about */
.about .about-btn {
  margin-top: calc(var(--about-rhythm) * 1);
  text-align: center;
}

.about .about-btn .btn {
  background: transparent;
  color: #fff;
  border: 1px solid rgba(255,255,255,0.12);
  padding: 0.6rem 1rem;
  border-radius: 999px;
  transition: background .18s ease, transform .18s ease, box-shadow .18s ease;
}
.about .about-btn .btn:hover,
.about .about-btn .btn:focus {
  background: rgba(255,255,255,0.04);
  transform: translateY(-3px);
  box-shadow: 0 10px 30px rgba(0,0,0,0.4);
}

/* Social icons inside about: ensure visibility on black */
.about .floating-socials .float-icon img,
.about .floating-socials .float-icon svg {
  filter: none !important;
  opacity: 1 !important;
}

/* Small screens adjustments */
@media (max-width: 767px) {
  .about {
    padding-block-start: calc(var(--about-rhythm) * 1.4);
    padding-block-end: calc(var(--about-rhythm) * 1.4);
  }
  .about .about-card {
    padding: calc(var(--about-rhythm) * 1.1);
    border-radius: 10px;
  }
  .about p {
    font-size: 1rem;
    line-height: 1.6;
  }
}

/* Large screens: more breathing room */
@media (min-width: 1400px) {
  .about {
    --about-rhythm: 20px;
    padding-block-start: calc(var(--about-rhythm) * 2.6);
    padding-block-end: calc(var(--about-rhythm) * 3);
  }
  .about .about-card {
    padding: calc(var(--about-rhythm) * 1.9);
  }
}

/* End of premium about block */
/* === ABOUT — widening inner content === */

.about .about-inner,
.about .about-card {
  max-width: 1400px !important;   /* szerzej */
}

.about p {
  max-width: 120ch !important;    /* szersze linijki tekstu */
}
/* === HERO — czarne tło za zdjęciem === */
.hero {
  background-color: #000 !important;
}

.hero::before,
.hero-overlay {
  background-color: #000 !important;
}
/* === CONTACT — make .contact.container full-bleed and match "about" premium look === */

#contact,
.contact {
  --contact-rhythm: 18px;
  --contact-max: 1400px;

  background: #000 !important;
  color: #f5f5f5;
  padding-block-start: calc(var(--contact-rhythm) * 2);
  padding-block-end: calc(var(--contact-rhythm) * 2);
  padding-inline: clamp(1rem, 3vw, 4rem);
  box-sizing: border-box;
  width: 100% !important;
  margin: 0 !important;
}

/* If .contact also has .container, force full-bleed visuals */
.contact.container {
  max-width: 100% !important;
  width: 100% !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* Inner wrapper to constrain readable measure (optional but recommended) */
.contact .contact-inner {
  max-width: var(--contact-max);
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}

/* Headings, paragraph and form controls */
.contact h2 {
  text-align: center;
  color: #fff;
  margin-bottom: calc(var(--contact-rhythm) * 1.2);
  font-size: clamp(1.6rem, 1.1rem + 2.2vw, 2.4rem);
}

.contact p {
  text-align: center;
  max-width: 120ch;
  margin: 0 auto calc(var(--contact-rhythm) * 1.2);
  line-height: 1.75;
  font-size: clamp(1rem, 0.95rem + .35vw, 1.06rem);
  color: #eaeaea;
}

/* Inputs / textarea */
.contact input,
.contact textarea {
  background: #000;
  color: #fff;
  border: 1px solid #333;
  padding: .9rem 1rem;
  width: 100%;
  border-radius: 8px;
  font-size: 1rem;
  box-sizing: border-box;
}

.contact input:focus,
.contact textarea:focus {
  border-color: #555;
  outline: none;
  box-shadow: 0 0 0 2px rgba(255,255,255,0.06);
}

/* Buttons */
.contact button,
.contact .btn {
  background: transparent;
  color: #fff;
  border: 1px solid rgba(255,255,255,0.12);
  padding: 0.7rem 1.4rem;
  border-radius: 999px;
  cursor: pointer;
  transition: background .18s, transform .18s, box-shadow .18s;
}

.contact button:hover,
.contact .btn:hover {
  background: rgba(255,255,255,0.08);
  transform: translateY(-3px);
  box-shadow: 0 10px 30px rgba(0,0,0,0.4);
}

/* small screens */
@media (max-width:700px) {
  #contact, .contact {
    padding-block-start: calc(var(--contact-rhythm) * 1.4);
    padding-block-end: calc(var(--contact-rhythm) * 1.4);
    padding-inline: 1rem;
  }
  .contact .contact-inner { padding: 0 0; }
  .contact input, .contact textarea { padding: .75rem .9rem; }
}
/* === FIX HERO BACKGROUND — keep image, only set black base === */

/* Hero sam w sobie ma czarne tło ZA zdjęciem */
.hero {
  background-color: #000 !important;
}

/* Przywracamy działanie zdjęcia, usuwamy czarne nadpisanie */
.hero::before {
  background-color: transparent !important;
  background-blend-mode: normal !important;
}

/* Overlay też musi być półprzezroczysty — nie pełne black */
.hero-overlay {
  background: rgba(0,0,0,0.35) !important; /* lub Twoja wartość vignettingu */
}
/* Pewne, jednoznaczne wycentrowanie nagłówka O mnie */
.about h2 {
  display: inline-block;       /* traktujemy nagłówek jako element o szerokości tekstu */
  position: relative;          /* potrzebne do transform */
  left: 50%;                   /* przesuwamy punkt odniesienia w połowie rodzica */
  transform: translateX(-50%); /* przeciwdziałamy przesunięciu — środek tekstu będzie na środku */
  text-align: center;          /* dodatkowo dla bezpieczeństwa */
  width: auto;                 /* upewniamy się, że nie ma ograniczającego max-width */
  margin: 0 0 15px 0;          /* zachowujemy poprzedni odstęp dolny */
  white-space: nowrap;         /* (opcjonalne) zapobiega zawijaniu, usuń jeśli chcesz zawijanie */
  z-index: 2;                  /* w razie gdyby coś nachodziło */
}

/* Jeśli dalej coś nadpisuje, wymuś regułę */
.about h2.center-force {
  left: 50% !important;
  transform: translateX(-50%) !important;
  display: inline-block !important;
}
/* 1) upewnij się, że kontener odniesienia jest pozycjonowany */
.about {
  position: relative; /* tylko gdy jeszcze nie ma takiej reguły */
}

/* 2) absolutne wycentrowanie nagłówka względem .about (całej sekcji) */
.about h2 {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: 18px;            /* dopasuj pionowe ustawienie (np. 18px lub 24px) */
  margin: 0;            /* usuwa wpływ starych marginesów */
  display: block;
  width: auto;
  text-align: center;
  z-index: 5;           /* żeby nie zasłaniały go inne elementy */
  white-space: nowrap;  /* usuń, jeśli chcesz zawijanie na wąskich ekranach */
}

/* 3) responsywność — na małych ekranach ustaw nagłówek w normalnym przepływie */
@media (max-width: 700px) {
  .about h2 {
    position: static;   /* przywraca normalne zachowanie na mobilkach */
    transform: none;
    margin-bottom: 15px;
    white-space: normal;
  }
}
.about-title {
    text-align: center;
    font-size: 2.2rem;
    margin-bottom: 40px;
    color: #fff;
}
/* --- Poprawka centrowania nagłówka sekcji O mnie --- */
.about-title, 
.about h2 {
  text-align: center !important;
  display: block !important;
  position: static !important;
  transform: none !important;
  left: auto !important;
  margin: 0 0 24px 0 !important;
  white-space: normal !important;
}
/* ---------- FINALNE, JEDNOZNACZNE WYŚRODKOWANIE NAGŁÓWKA "O mnie" ---------- */
.about { position: static; } /* upewniamy się że sekcja działa normalnie w flow */

.about h2,
.about-title {            /* obsługuje zarówno h2 wewnątrz about, jak i .about-title */
  position: static !important;   /* przywraca normalny przepływ (nie absolute/relative) */
  display: block !important;
  margin: 0 auto 24px auto !important; /* centrowanie poziome i odstęp dolny */
  width: auto !important;
  text-align: center !important;
  transform: none !important;
  left: auto !important;
  top: auto !important;
  white-space: normal !important; /* pozwól na zawijanie przy wąskich ekranach */
  z-index: 2 !important;
}
@media (max-width: 700px) {
  .about h2, .about-title {
    margin-bottom: 16px !important;
    font-size: clamp(1.3rem, 4vw, 1.9rem) !important;
  }
}
/* --- Galeria: tło jak reszta strony --- */
.gallery {
  background-color: #000 !important;
}
/* Hero: przygotowanie pod efekt */
.hero {
  text-align: center;
  padding: 100px 20px;
  position: relative;   /* potrzebne, aby ::after działał */
  overflow: hidden;     /* żeby gradient nie wychodził poza hero */
}

/* Delikatne przyciemnienie i rozmycie dolnej części zdjęcia */
.hero::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;

  width: 100%;
  height: 15%; /* jak daleko efekt ma wchodzić w górę zdjęcia */

  background: linear-gradient(
    to bottom,
    rgba(0,0,0,0) 0%,       /* przezroczysty początek */
    rgba(0,0,0,0.35) 70%,   /* delikatne przyciemnienie */
    rgba(0,0,0,0.6) 100%   /* prawie czarny dół */
  );

  backdrop-filter: blur(2px); /* lekkie rozmycie */
  pointer-events: none;       /* nic nie blokuje kliknięć */
  z-index: 2;
}
/* Poprawka przycisku w sekcji kontakt – widoczny hover */
.contact .btn:hover {
    background: rgba(255, 255, 255, 0.15) !important;
    color: #fff !important;
    border-color: rgba(255, 255, 255, 0.4) !important;
}
/* --- MOBILE FIX: idealne wyśrodkowanie O mnie i galerii --- */
@media (max-width: 600px) {

  .about,
  .about-inner,
  .gallery,
  .gallery-inner,
  .container,
  section {
    margin-left: auto !important;
    margin-right: auto !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    width: 100% !important;
    box-sizing: border-box;
  }
}
/* ===== Final hamburger/menu — transform-based, fixed sizing to avoid layout shift ===== */

/* ensure no horizontal overflow from menu offscreen (if not already) */
html, body { overflow-x: hidden; }

/* BUTTON */
.menu-btn {
  position: fixed;
  top: 10px;                              /* wyrównanie z #lang-switch */
  right: calc(20px + 44px);               /* 20px = right of #lang-switch, +44px buffer; adjust if needed */
  width: 32px;                            /* desktop: delikatnie mniejszy */
  height: 24px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  background: none;
  border: none;
  cursor: pointer;
  padding: 6px;
  z-index: 30000 !important;              /* button always on top */
  -webkit-tap-highlight-color: transparent;
  box-sizing: content-box;
}

.menu-btn span {
  display: block;
  height: 2px;
  width: 100%;
  background: #fff;
  border-radius: 2px;
  transition: transform .24s cubic-bezier(.2,.9,.2,1), opacity .18s ease;
  transform-origin: center;
}

/* hamburger -> X */
.menu-btn.open span:nth-child(1) {
  transform: translateY(6px) rotate(45deg);
}
.menu-btn.open span:nth-child(2) {
  opacity: 0;
}
.menu-btn.open span:nth-child(3) {
  transform: translateY(-6px) rotate(-45deg);
}

/* PANEL - use transform to avoid layout shifts / horizontal scrollbar */
.mobile-menu {
  position: fixed;
  top: 0;
  right: 0;                                /* anchored at right edge, but offscreen via transform */
  width: 300px;
  max-width: calc(100% - 40px);
  height: 100vh;
  background: rgba(0,0,0,0.95);
  backdrop-filter: blur(6px);
  padding: 90px 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  transition: transform .34s cubic-bezier(.2,.9,.2,1);
  z-index: 29999;                          /* slightly below button so X is always visible */
  box-shadow: -12px 0 30px rgba(0,0,0,0.6);
  transform: translateX(100%);             /* hidden (moved to right outside viewport) */
  will-change: transform;
}

/* visible state */
.mobile-menu.open {
  transform: translateX(0);
}

/* links */
.mobile-menu a {
  color: #fff;
  font-size: 1.05rem;
  text-decoration: none;
  padding: 10px 4px;
  border-bottom: 1px solid rgba(255,255,255,0.03);
}
.mobile-menu a:hover { color: #ffd67a; }

/* RESPONSYWNE DOSTOSOWANIA */

/* Mobile: mniejszy przycisk, przesunięcie tak aby nie nachodził na #lang-switch */
@media (max-width: 480px) {
  .menu-btn {
    right: calc(12px + 36px); /* 12px ~ right of small #lang-switch + 36px buffer */
    width: 30px;
    height: 22px;
    padding: 5px;
    top: 10px;
  }
  .mobile-menu { width: 260px; max-width: calc(100% - 24px); }
}

/* Very narrow screens: ensure extra buffer */
@media (max-width: 360px) {
  .menu-btn { right: calc(8px + 34px); } /* smaller buffer for tiny screens */
}
/* ===== Final hamburger/menu - CSS (usuń poprzednie .menu-btn/.mobile-menu reguły) ===== */

/* podstawowy wygląd (rozmiar desktop mniejszy) */
.menu-btn {
  position: fixed;
  top: 10px;
  right: auto;            /* będzie ustawiane przez JS -> left preferowane */
  left: auto;
  width: 30px;            /* desktop: mniejszy */
  height: 22px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  background: none;
  border: none;
  cursor: pointer;
  padding: 6px;
  z-index: 30000 !important;
  -webkit-tap-highlight-color: transparent;
  box-sizing: content-box;
}

/* drobne różnice kreski */
.menu-btn span {
  display: block;
  height: 2px;
  width: 100%;
  background: #fff;
  border-radius: 2px;
  transition: transform .24s cubic-bezier(.2,.9,.2,1), opacity .18s ease;
  transform-origin: center;
}

/* X */
.menu-btn.open span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.menu-btn.open span:nth-child(2) { opacity: 0; }
.menu-btn.open span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* panel - transform-based, by nie tworzyć horyzontalnego scrolla */
.mobile-menu {
  position: fixed;
  top: 0;
  right: 0;
  width: 300px;
  max-width: calc(100% - 40px);
  height: 100vh;
  background: rgba(0,0,0,0.95);
  backdrop-filter: blur(6px);
  padding: 90px 20px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  transition: transform .34s cubic-bezier(.2,.9,.2,1);
  z-index: 29999 !important;
  box-shadow: -12px 0 30px rgba(0,0,0,0.6);
  transform: translateX(100%);
  will-change: transform;
}

.mobile-menu.open { transform: translateX(0); }

.mobile-menu a {
  color: #fff;
  font-size: 1.05rem;
  text-decoration: none;
  padding: 10px 4px;
  border-bottom: 1px solid rgba(255,255,255,0.03);
}
.mobile-menu a:hover { color: #ffd67a; }

/* Mobile - jeszcze mniejszy przycisk i mniejszy panel */
@media (max-width: 480px) {
  .menu-btn { width: 28px; height: 20px; padding: 5px; }
  .mobile-menu { width: 260px; max-width: calc(100% - 24px); }
}

/* bardzo wąskie ekrany: nic specjalnego tutaj, JS dopasuje pozycję */
@media (max-width: 360px) {
  .menu-btn { width: 26px; height: 20px; padding: 4px; }
}
/* --- JEDYNY POPRAWNY STYL: identyczny jak Kontakt, w miedzi --- */
.btn.btn-copper {
  background: transparent;
  color: #b87333;
  border: 1px solid rgba(184,115,51,0.35);
  padding: 0.7rem 1.4rem;
  border-radius: 999px;
  cursor: pointer;
  transition: background .18s, transform .18s, box-shadow .18s;
}

.btn.btn-copper:hover {
  background: rgba(184,115,51,0.08);
  transform: translateY(-3px);
  box-shadow: 0 10px 30px rgba(0,0,0,0.4);
}
/* ============================================
   FINAL FIX — PRZEBIJA KONFLIKT W ABOUT
   ============================================ */

.about .about-btn .btn.btn-copper,
.btn.btn-copper {
  background: transparent !important;
  color: #b87333 !important;
  border: 1px solid rgba(184,115,51,0.35) !important;
  padding: 0.7rem 1.4rem !important;
  border-radius: 999px !important;
  cursor: pointer;
  transition: background .18s, transform .18s, box-shadow .18s;
}

/* Hover identyczny jak kontakt */
.about .about-btn .btn.btn-copper:hover,
.btn.btn-copper:hover {
  background: rgba(184,115,51,0.08) !important;
  transform: translateY(-3px) !important;
  box-shadow: 0 10px 30px rgba(0,0,0,0.4) !important;
}
/* --- SHINE efekt wspólny --- */
.btn::after {
  content: "";
  position: absolute;
  top: 0;
  left: -120%;
  height: 100%;
  width: 120%;
  background: linear-gradient(
    120deg,
    transparent 0%,
    rgba(255,255,255,0.15) 50%,
    transparent 100%
  );
  transform: skewX(-20deg);
  transition: 0.5s;
  pointer-events: none;
}

.btn:hover::after {
  left: 120%;
}

/* --- Kontakt: biały glow --- */
.btn {
  position: relative; 
  overflow: hidden; 
}

.btn:hover {
  box-shadow: 0 0 12px rgba(255,255,255,0.25);
}
/* Przycisk miedziany — dodajemy glow */
.btn-copper {
  position: relative;
  overflow: hidden;
}

.btn-copper:hover {
  box-shadow: 
    0 0 12px rgba(184,115,51,0.35),   /* miedziany glow */
    0 10px 30px rgba(0,0,0,0.4);      /* głęboki cień jak Kontakt */
}

/* Shine dla miedzi – ten sam, ale w miedzianym odcieniu */
.btn-copper::after {
  content: "";
  position: absolute;
  top: 0;
  left: -120%;
  height: 100%;
  width: 120%;
  background: linear-gradient(
    120deg,
    transparent 0%,
    rgba(184,115,51,0.25) 50%,   /* miedziany połysk */
    transparent 100%
  );
  transform: skewX(-20deg);
  transition: 0.5s;
  pointer-events: none;
}

.btn-copper:hover::after {
  left: 120%;
}

