/* =====================================================================
   Km Gabinet Stomatologiczny – wspólne style dla index / oferta / galeria / kontakt
   Paleta zgodna z logo klientki: niebieski, szary, biały.
   ===================================================================== */
:root{
  --primary:#1D98F1;       /* niebieski z logo: CTA, akcenty, ikony, aktywne stany */
  --primary-dark:#1274BE;  /* hover/focus przycisków i linków; kolor małego tekstu-linku (AA na bieli) */
  --gray-light:#C8C9CB;    /* szary z kwadratu logo: obramowania, dekoracje, tekst na ciemnym tle */
  --gray-dark:#7E807F;     /* ciemny szary z podpisu w logo: ikony/elementy drugorzędne */
  --text:#2B2B2B;
  --muted:#5E5E5E;
  --bg:#F7F8F9;
  --surface:#FFFFFF;
  --deep:#123C5D;          /* ciemny granat (przyciemniony --primary): stopka, hero overlay */
  /* pochodne (nie są nowymi kolorami) */
  --link:var(--primary-dark);        /* mały tekst-link: --primary daje tylko 3,08:1 na bieli */
  --on-primary:#0B2236;              /* tekst na przyciskach --primary (biały daje tylko 3,08:1) */
  --gray-tint:rgba(126,128,127,.14); /* tło pod zdjęciami/mapą (z --gray-dark) */
  --line:var(--gray-light);
  --focus:var(--deep);
  --radius:16px;
  --radius-sm:14px;
  --shadow:0 10px 30px -12px rgba(18,60,93,.22),0 2px 6px rgba(18,60,93,.06); /* tylko karta kontaktowa (jedyny „główny” blok) */
  --shadow-soft:0 6px 18px -10px rgba(18,60,93,.28); /* zdjęcia, mapa */
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --sans:"Source Sans 3",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  /* Nakładka na zdjęcie w hero (baza = --deep; łatwo poprawić). Przy tych wartościach biały tekst ma min. 4,9:1 (0,55→0,75 dawało 3,5:1) */
  --hero-overlay-top:rgba(18,60,93,.68);
  --hero-overlay-bottom:rgba(18,60,93,.85);
  --header-h:64px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:1.0625rem;line-height:1.65;overflow-x:hidden;padding-bottom:calc(72px + env(safe-area-inset-bottom))}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.12;margin:0;letter-spacing:-.005em;text-wrap:balance}
h1{font-size:clamp(2.1rem,6.4vw,3.5rem)}
h2{font-size:clamp(1.9rem,5vw,2.9rem)}
h3{font-size:1.75rem}
p,figure{margin:0}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}
.on-dark{--focus:#FFFFFF}
.wrap{width:min(100% - 32px,1120px);margin-inline:auto}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;margin:-1px;padding:0;border:0}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:12px;top:-60px;background:var(--deep);color:#fff;padding:10px 16px;border-radius:8px;z-index:400;text-decoration:none}
.skip:focus{top:12px}

/* Przyciski */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:50px;padding:.6rem 1.5rem;border-radius:999px;font:600 1.0625rem/1.2 var(--sans);text-decoration:none;border:2px solid transparent;cursor:pointer;transition:background-color .2s,color .2s,border-color .2s,transform .2s}
.btn svg{width:20px;height:20px;flex:none}
/* „Zadzwoń” w przyciskach: ta sama rodzina co tytuły kafelków hero (Cormorant Garamond 600, var(--serif)), numer zostaje w Source Sans 3.
   Cormorant ma drobniejsze litery niż Source Sans, więc słowo jest ~25% większe (x-height ≈ cyfry obok); wspólna baseline. */
.cta-label{display:inline-block;white-space:nowrap}
.cta-script{font-family:var(--serif);font-style:italic;font-weight:600;font-size:1.3em;line-height:1;letter-spacing:.01em;margin-right:.1em}
.cta-script--colon{margin-right:0}
/* „Zadzwoń” i „Wyznacz trasę”: tło --primary; tekst ciemny (biały = 3,08:1), hover --primary-dark z białym tekstem (4,9:1) */
.btn-primary,.btn-ghost{background:var(--primary);color:var(--on-primary)}
.btn-primary:hover,.btn-ghost:hover{background:var(--primary-dark);color:#fff}

/* Ikony liniowe */
.ico{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* Nagłówek podstron: nazwa + proste linki (bez kotwic i bez hamburgera) */
header.site{position:relative;z-index:100;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line)}
.bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 16px;padding-block:10px;min-height:var(--header-h)}
.brand{font-family:var(--serif);font-weight:600;font-size:1.3rem;line-height:1.1;text-decoration:none;color:var(--text)}
.brand small{display:block;font:400 .8125rem/1.3 var(--sans);letter-spacing:.02em;color:var(--muted);margin-top:3px}
nav.main{order:3;width:100%}
nav.main ul{list-style:none;margin:0;padding:0;display:flex;justify-content:space-between;gap:2px}
nav.main a{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;text-decoration:none;font-weight:600;font-size:.9375rem;border-bottom:2px solid transparent}
nav.main a:hover{color:var(--link);border-bottom-color:var(--primary)}
nav.main a[aria-current="page"]{color:var(--link);border-bottom-color:var(--primary)}
.head-cta{display:none}

/* Nagłówek strony głównej – tylko nazwa, na zdjęciu hero */
header.site.home{position:absolute;top:0;left:0;right:0;background:none;border:0;color:#fff}
header.site.home .bar{min-height:0;padding:0}
header.site.home .brand{color:#fff;text-shadow:0 1px 14px rgba(0,0,0,.35)}

/* Dzielnik – grecki meander */
.meander{display:block;width:100%;height:14px}
.meander rect{fill:url(#mnd)}
#mnd path{stroke:var(--gray-light)} /* currentColor wewnątrz <pattern> dziedziczy z definicji wzoru, nie z użycia – dlatego kolor ustawiamy tu */

/* Sekcje */
section.block{padding:clamp(52px,8vw,96px) 0}
.page-head{padding:clamp(34px,6vw,70px) 0 clamp(30px,4.5vw,52px);background:
  radial-gradient(700px 380px at 92% 0%,rgba(29,152,241,.08),transparent 70%),
  radial-gradient(600px 400px at 0% 100%,rgba(200,201,203,.18),transparent 70%),var(--bg)}
.page-head h1{max-width:19em}

/* HERO na całą wysokość ekranu (strona główna): nadtytuł, H1, zdanie odręczne, CTA i 3 kafelki w jednej kolumnie */
.hero-full{position:relative;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;color:#fff;
  /* symetryczne marginesy + dodatkowe 10vh na dole = blok o ok. 5vh powyżej geometrycznego środka (środek optyczny) */
  padding:clamp(40px,6vh,72px) 0 calc(clamp(40px,6vh,72px) + 10vh);
  background-color:var(--deep);
  background-image:linear-gradient(var(--hero-overlay-top),var(--hero-overlay-bottom)),url("img/hero-narzedzia-stomatologiczne.webp");
  background-size:cover;background-position:center;background-repeat:no-repeat}
.hero-full .wrap{display:flex;flex-direction:column;align-items:center}
/* Zdanie „odręczne” pod H1 – Parisienne (tylko waga 400), biały + cień dla czytelności na zdjęciu */
.script-line{font-family:'Parisienne','Brush Script MT',cursive;font-weight:400;font-style:normal;font-size:clamp(3.5rem,2.5rem + 6vw,6rem);line-height:1.15;letter-spacing:.01em;color:#fff;text-shadow:0 2px 14px rgba(18,60,93,.7),0 1px 3px rgba(18,60,93,.5);margin:0}
.cta-row{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:32px}
.hero-full .cta-row{margin-top:clamp(18px,3.2vh,32px)}
.hero-full .btn-primary{min-height:56px;padding-inline:2rem;font-size:1.125rem}
.hero-full nav{margin-top:clamp(22px,4.4vh,44px);width:100%;max-width:900px}

/* JEDEN przemyślany moment wejścia (tylko strona główna): H1 „pisze się” od lewej, potem CTA i kafelki po kolei.
   Animacje CSS z domyślnie widoczną treścią po zakończeniu; przy prefers-reduced-motion wyłączone (reguła na dole). */
@keyframes hero-write{from{opacity:0;clip-path:inset(-30% 100% -30% -6%)}to{opacity:1;clip-path:inset(-30% -6% -30% -6%)}}
@keyframes hero-rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.hero-full .script-line{animation:hero-write 1.2s cubic-bezier(.16,1,.3,1) .15s both}
.hero-full .cta-row{animation:hero-rise .9s cubic-bezier(.16,1,.3,1) .75s both}
.hero-full .tiles-grid li{animation:hero-rise .9s cubic-bezier(.16,1,.3,1) both}
.hero-full .tiles-grid li:nth-child(1){animation-delay:.95s}
.hero-full .tiles-grid li:nth-child(2){animation-delay:1.05s}
.hero-full .tiles-grid li:nth-child(3){animation-delay:1.15s}

/* Kafelki-linki (w hero): jasne, prawie białe tło, ciemny tekst – czytelne na zdjęciu */
.tiles-grid{display:grid;gap:10px;list-style:none;margin:0;padding:0}
.tile-link{position:relative;display:grid;grid-template-columns:auto 1fr auto;align-items:center;column-gap:14px;height:100%;padding:12px 16px;background:rgba(255,255,255,.92);color:var(--text);border-radius:var(--radius);border-top:3px solid var(--gray-light);box-shadow:0 12px 28px -14px rgba(0,0,0,.5);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);text-decoration:none;transition:transform .25s ease,box-shadow .25s ease,color .25s ease,border-color .25s ease}
.tile-link .t-ico{grid-column:1;grid-row:1;width:34px;height:34px;color:var(--primary-dark)}
.tile-link h2{grid-column:2;grid-row:1;font-size:1.75rem;line-height:1.1;transition:color .25s}
.tile-link .go{grid-column:3;grid-row:1;display:flex}
.tile-link .go svg{width:24px;height:24px;color:var(--primary-dark);transition:color .25s,transform .25s}
.tile-link:hover,.tile-link:focus-visible{transform:translateY(-4px);border-top-color:var(--primary);box-shadow:0 18px 34px -14px rgba(0,0,0,.55)}
.tile-link:hover h2,.tile-link:focus-visible h2{color:var(--link)}
.tile-link:hover .go svg,.tile-link:focus-visible .go svg{color:var(--deep);transform:translateX(4px)}
.tile-link:focus-visible{outline:3px solid #fff;outline-offset:3px}
.tile-link:active{transform:translateY(-1px)}

/* Oferta: karty usług */

/* O gabinecie (oferta.html): jedna sekcja z tekstem, kolumna czytelnej szerokości, wyśrodkowana w kontenerze */
/* sekcja = kontekst nakładania z jednolitym tłem strony: dzięki temu multiply logo „znika” na bieli zamiast ją rozjaśniać */
section.about-copy{padding-block:clamp(40px,6vw,80px) clamp(64px,9vw,112px);overflow:hidden;position:relative;isolation:isolate;background:var(--bg)}
.copy{--copy-pad:clamp(20px,4vw,40px);position:relative;max-width:calc(66ch + 2*var(--copy-pad));margin-inline:auto;padding:clamp(28px,4vw,48px) var(--copy-pad)}
/* Logo gabinetu jako dekoracyjne tło tekstu: tylko ta warstwa jest półprzezroczysta, tekst pozostaje w 100% kryjący. Multiply zakłada jasne tło strony (--bg). */
.copy::before{content:"";position:absolute;/* logo większe niż kolumna tekstu, ale nigdy szersze niż ekran (min z 24% i odległości do krawędzi viewportu) */inset:-12% calc(-1 * min(24%, (100vw - 100%) / 2));z-index:-1;pointer-events:none;background-image:url("img/logo-km-gabinet-tlo.webp");background-repeat:no-repeat;background-position:center;background-size:contain;opacity:var(--logo-opacity,.30);mix-blend-mode:multiply}
.copy p{font-size:clamp(1.125rem,1.05rem + .35vw,1.3rem);line-height:1.7;text-wrap:pretty}
.copy p+p{margin-top:1.1em;color:#4A4A4A} /* ciemniejszy niż --muted: czytelność na mocniejszym tle logo (kontrast >5:1) */

/* Galeria */
.gallery-grid{display:grid;gap:14px}
.tile{padding:0;border:0;background:var(--gray-tint);border-radius:var(--radius);overflow:hidden;cursor:zoom-in;position:relative;height:clamp(230px,62vw,340px);box-shadow:var(--shadow-soft)}
.tile img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.tile:hover img{transform:scale(1.035)}
.tile::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(126,128,127,.25);pointer-events:none}
.t-wait img{object-position:50% 35%}
.t-console img{object-position:50% 52%}
.t-room img{object-position:50% 60%}
.t-garden img{object-position:50% 55%}
.t-sofa img{object-position:50% 50%}
.t-chair img{object-position:50% 60%}

/* Lightbox */
.lb{position:fixed;inset:0;z-index:300;background:rgba(10,26,40,.92);display:flex;align-items:center;justify-content:center;padding:56px 12px}
.lb[hidden]{display:none}
.lb figure{margin:0;max-width:min(1000px,100%);max-height:100%;display:flex;flex-direction:column;align-items:center;gap:12px}
.lb img{max-height:calc(100vh - 112px);max-height:calc(100dvh - 112px);width:auto;border-radius:var(--radius-sm)}
.lb button{position:absolute;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.5);background:rgba(255,255,255,.1);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}
.lb button:hover{background:rgba(255,255,255,.22)}
.lb button svg{width:22px;height:22px}
.lb :focus-visible{outline-color:#fff}
.lb-close{top:8px;right:8px}
.lb-prev{left:8px;top:50%;transform:translateY(-50%)}
.lb-next{right:8px;top:50%;transform:translateY(-50%)}

/* Kontakt */
.contact{background:linear-gradient(180deg,var(--bg),#EEF1F4)}
.contact-grid{display:grid;gap:28px}
.info{background:var(--surface);border-radius:var(--radius);padding:28px 26px;box-shadow:var(--shadow)}
.phone-big{display:inline-block;font-family:var(--serif);font-weight:600;font-size:clamp(2.1rem,9vw,3.3rem);line-height:1;color:var(--primary);text-decoration:none;white-space:nowrap}
.phone-big:hover{color:var(--primary-dark)}
.dl{margin:26px 0 0;display:grid;gap:18px}
.dl>div{display:grid;grid-template-columns:28px 1fr;gap:14px;align-items:start}
.dl svg{width:26px;height:26px;color:var(--primary);margin-top:2px}
.dl dt{font-weight:600}
.dl dd{margin:0;color:var(--muted)}
.dl dd .phone-big{margin-top:2px;line-height:1.1}
.info .cta-row{margin-top:24px;justify-content:flex-start}
.door{margin:0}
.door img{width:100%;border-radius:var(--radius);box-shadow:var(--shadow-soft);aspect-ratio:945/700;object-fit:cover;object-position:50% 72%}
.map{border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-soft);border:1px solid var(--line);background:var(--gray-tint);min-height:340px;height:100%}
.map iframe{display:block;width:100%;height:100%;min-height:340px;border:0}

/* Stopka */
footer.site{background:var(--deep);color:#fff;padding:0 0 30px}
.meander-foot{opacity:.5;margin-bottom:52px}
.foot-grid{display:grid;gap:32px}
footer .lbl{font:600 .8125rem/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--gray-light);margin-bottom:12px}
footer address{font-style:normal;line-height:1.75}
footer .fname{font-family:var(--serif);font-weight:600;font-size:1.5rem;line-height:1.2;display:block;margin-bottom:6px}
footer a{color:#fff;text-underline-offset:4px}
footer ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
footer ul a{text-decoration:none;display:inline-block;padding:3px 0}
footer ul a:hover,footer address a:hover{text-decoration:underline}
.fine{margin-top:40px;padding-top:20px;border-top:1px solid rgba(200,201,203,.3);font-size:.8125rem;color:var(--gray-light);display:flex;flex-wrap:wrap;gap:6px 24px;justify-content:space-between}

/* Dolny stały pasek „Zadzwoń” (mobile, wszystkie strony) */
.callbar{position:fixed;left:0;right:0;bottom:0;z-index:150;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(18,60,93,.10)}
.callbar .btn{width:100%}


@media (min-width:640px){
  .foot-grid{grid-template-columns:1fr 1fr}
  nav.main ul{justify-content:flex-start;gap:10px}
  nav.main a{padding:0 12px;font-size:1rem}
}
@media (min-width:900px) and (max-width:999px){
  /* nazwa + menu + przycisk w jednym rzędzie: ciaśniejsze pozycje menu, bez zawijania */
  nav.main ul{gap:2px}
  nav.main a{padding:0 6px;white-space:nowrap}
}
@media (max-width:399px){
  .brand{font-size:1.15rem}
  /* 4 pozycje menu w jednym rzędzie, także z dłuższym „O gabinecie” */
  nav.main a{padding:0 4px;font-size:.875rem;white-space:nowrap}
}
@media (max-width:339px){nav.main a{padding:0 2px;font-size:.8125rem}}
@media (max-width:639px){
  .cta-row .btn{flex:1 1 100%}
  .info .cta-row .btn{flex:1 1 100%}
}
@media (max-width:719px){
  .hero-full{padding-bottom:calc(clamp(40px,6vh,72px) + 72px + env(safe-area-inset-bottom))}
  .tiles-grid{gap:8px}
  .tile-link{padding:8px 14px}
}
@media (min-width:720px){
  .tiles-grid{grid-template-columns:repeat(3,1fr);gap:16px}
  .tile-link{padding:14px 20px}
}
@media (max-width:999px){
  /* proporcje kafelków = proporcje zdjęć (pionowe 4:5, poziome 4:3) – bez agresywnego kadrowania */
  .tile{height:auto;aspect-ratio:4/5}
  .tile:nth-child(2),.tile:nth-child(3){aspect-ratio:4/3}
}
@media (min-width:640px) and (max-width:999px){
  /* tablet: siatka 6-kolumnowa – rząd 1: ogród (2) + poczekalnia (4); rząd 2: poczekalnia z kanapą (6); rząd 3: trzy pionowe (po 2) */
  .gallery-grid{grid-template-columns:repeat(6,1fr)}
  .tile:nth-child(1){grid-column:span 2;aspect-ratio:auto;height:300px}
  .tile:nth-child(2){grid-column:span 4;aspect-ratio:auto;height:300px}
  .tile:nth-child(3){grid-column:span 6;aspect-ratio:3/2}
  .tile:nth-child(n+4){grid-column:span 2;aspect-ratio:3/4}
}
@media (min-width:720px) and (max-width:899px){
  /* węższe kafelki (3 w rzędzie): wszystkie trzy jednakowo, żeby „O gabinecie” mieściło się w jednej linii */
  .tile-link{padding-inline:14px;column-gap:10px}
  .tile-link h2{font-size:1.4rem;white-space:nowrap}
}
@media (min-width:900px){
  header.site:not(.home){position:sticky;top:0;backdrop-filter:saturate(1.2) blur(8px);-webkit-backdrop-filter:saturate(1.2) blur(8px);background:rgba(255,255,255,.94)}
  .bar{flex-wrap:nowrap;min-height:76px}
  nav.main{order:0;width:auto;margin-left:auto}
  .head-cta{display:inline-flex;min-height:48px;padding:.5rem 1.3rem}
}
@media (min-width:1000px){
  :root{--header-h:76px}
  body{padding-bottom:0}
  .callbar{display:none}
  /* desktop: 24 kolumn – rząd 1: ogród (6) + dwie poczekalnie (po 9); rząd 2: trzy pionowe (po 8) */
  .gallery-grid{grid-template-columns:repeat(24,1fr);gap:18px}
  .tile:nth-child(1){grid-column:span 6}
  .tile:nth-child(2),.tile:nth-child(3){grid-column:span 9}
  .tile:nth-child(n+4){grid-column:span 8}
  .tile:nth-child(-n+3){height:clamp(300px,28vw,340px)}
  .tile:nth-child(n+4){height:clamp(380px,34vw,440px)}
  .contact-grid{grid-template-columns:1fr 1fr;gap:32px;align-items:stretch}
  .map{min-height:100%}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition:none !important;animation:none !important}
  .tile-link:hover,.tile-link:focus-visible{transform:none}
}
