
/* ============================================================
   LUKENDA DENTAL — design tokens
   Direction: editorial / premium — palette derived from the practice logo
   ============================================================ */
:root{
  /* brand — taken from the Lukenda Dental mark: navy #122539 → pale #a6c1d5 */
  --ink-950: hsl(211 58% 8%);
  --ink-900: hsl(211 56% 11%);
  --ink-800: hsl(211 62% 14%);   /* #0c243e — the navy of the mark */
  --ink-700: hsl(211 48% 22%);

  /* the mark’s gradient, opened into a usable scale */
  --blue-800: hsl(209 44% 28%);
  --blue-700: hsl(208 40% 37%);
  --blue-600: hsl(207 38% 44%);
  --blue-500: hsl(206 36% 62%);   /* the pale end of the logo gradient */
  --blue-400: hsl(206 36% 74%);   /* #a6c1d5 — the pale end of the mark */
  --blue-300: hsl(206 42% 83%);
  --blue-200: hsl(206 46% 90%);
  --blue-50:  hsl(206 52% 96.5%);

  /* gold — the wordmark on the dark lockup. This is the accent: actions,
     rules, numerals. Nothing decorative gets it. */
  --gold-800: hsl(38 52% 26%);
  --gold-700: hsl(39 54% 33%);   /* labels + eyebrows on light ground */
  --gold-600: hsl(40 55% 42%);   /* borders, focus ring, small marks */
  --gold-500: hsl(42 55% 60%);
  --gold-400: hsl(42 55% 71%);   /* #dec58c — the gold of the mark */
  --gold-300: hsl(43 60% 80%);
  --gold-200: hsl(43 62% 88%);
  --gold-50:  hsl(44 60% 96%);

  /* cool neutrals, hue borrowed from the logo grey */
  --paper-50:  hsl(210 25% 98.5%);
  --paper-100: hsl(210 20% 95.5%);
  --paper-200: hsl(210 15% 91%);
  --paper-300: hsl(210 12% 84%);
  --slate-400: hsl(210 6% 57%);
  --slate-500: hsl(212 7% 43%);
  --slate-700: hsl(212 13% 27%);
  --slate-900: hsl(212 26% 13%);

  /* text roles */
  --text-1: var(--slate-900);
  --text-2: var(--slate-700);
  --text-3: var(--slate-500);
  --on-dark-1: hsl(208 30% 95%);
  --on-dark-2: hsl(208 18% 80%);
  --on-dark-3: hsl(209 12% 64%);

  --line: hsl(210 15% 87%);
  --line-strong: hsl(210 13% 76%);
  --line-dark: hsl(206 40% 100% / .15);

  /* radius */
  --r-sm: 6px; --r-md: 10px; --r-lg: 16px; --r-xl: 24px; --r-full: 999px;

  /* shadows (hue-matched, layered) */
  --sh-sm: 0 1px 2px hsl(212 50% 9% / .06);
  --sh-md: 0 1px 2px hsl(212 50% 9% / .05), 0 4px 14px hsl(212 50% 9% / .07);
  --sh-lg: 0 2px 4px hsl(212 50% 9% / .05), 0 10px 28px hsl(212 50% 9% / .09), 0 24px 60px hsl(212 50% 9% / .09);

  /* motion */
  --ease-out: cubic-bezier(.16,1,.3,1);
  --ease-io: cubic-bezier(.65,0,.35,1);
  --fast: 150ms; --med: 250ms; --slow: 420ms;

  /* type */
  --serif: "Fraunces","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --sans: "Inter",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;

  --shell: 1200px;

  /* light version of the practice mark, for dark surfaces */
  --logo-light: url('logo-light.png');
}

*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:96px}
body{
  margin:0; background:var(--paper-50); color:var(--text-1);
  font-family:var(--sans); font-size:17px; line-height:1.65;
  font-synthesis-weight:none; -webkit-font-smoothing:antialiased;
}
img,svg{display:block; max-width:100%}
h1,h2,h3,h4{font-family:var(--serif); font-weight:400; margin:0; line-height:1.08; letter-spacing:-.02em; font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 0}
p{margin:0}
a{color:inherit; text-decoration:none}
button{font:inherit; color:inherit}
:focus-visible{outline:2px solid var(--gold-600); outline-offset:3px; border-radius:4px}
/* headings are focused programmatically on route change — announce, do not outline */
[tabindex="-1"]:focus,[tabindex="-1"]:focus-visible{outline:none}
::selection{background:var(--gold-200); color:var(--ink-950)}

.shell{width:min(100% - 40px, var(--shell)); margin-inline:auto}
.shell-wide{width:min(100% - 40px, 1400px); margin-inline:auto}
@media (max-width:600px){ .shell,.shell-wide{width:min(100% - 32px,var(--shell))} }

/* ---------- type utilities ---------- */
.eyebrow{
  font-size:12px; font-weight:600; letter-spacing:.14em; text-transform:uppercase;
  color:var(--gold-700); display:flex; align-items:center; gap:10px;
}
.eyebrow::before{content:""; width:26px; height:1px; background:var(--gold-600); flex:none}
.eyebrow.on-dark{color:var(--gold-400)}
.eyebrow.on-dark::before{background:var(--gold-500)}
.eyebrow.center{justify-content:center}

.h-display{font-size:clamp(2.35rem,5.6vw,4.5rem); line-height:1.03; letter-spacing:-.03em}
.h1{font-size:clamp(2.1rem,4.6vw,3.5rem); line-height:1.06}
.h2{font-size:clamp(1.6rem,2.7vw,2.15rem); line-height:1.12}
.h3{font-size:clamp(1.2rem,1.7vw,1.4rem); line-height:1.2}
.lede{font-size:clamp(1.05rem,1.35vw,1.2rem); line-height:1.6; color:var(--text-2); max-width:60ch}
.lede.on-dark{color:var(--on-dark-2)}
.muted{color:var(--text-3)}
.tnum{font-variant-numeric:tabular-nums}

section{position:relative}
.pad{padding-block:clamp(72px,9vw,132px)}
.pad-sm{padding-block:clamp(56px,6vw,88px)}
.rule{height:1px; background:var(--line); border:0; margin:0}

/* ---------- buttons ---------- */
.btn{
  --bg:var(--gold-400); --bg-h:var(--gold-300); --bg-a:var(--gold-500);
  --fg:var(--ink-950); --bd:var(--gold-600);
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:52px; padding:14px 26px; border-radius:var(--r-full);
  background:var(--bg); color:var(--fg); border:1px solid var(--bd);
  font-size:15px; font-weight:600; letter-spacing:-.005em; cursor:pointer;
  transition:transform var(--fast) var(--ease-out), background var(--fast) linear, box-shadow var(--fast) var(--ease-out);
  box-shadow:var(--sh-sm); white-space:nowrap;
}
.btn:hover{--bg:var(--bg-h); transform:translateY(-2px); box-shadow:var(--sh-md)}
.btn:active{transform:translateY(0); --bg:var(--bg-a)}
/* on navy the gold needs no darker rim to separate it from the ground */
.hero .btn:not(.btn-ghost), .feature .btn:not(.btn-ghost), .contact .btn:not(.btn-ghost),
.foot .btn:not(.btn-ghost), .mobile .btn:not(.btn-ghost), .callbar .btn:not(.btn-ghost),
.pagehead .btn:not(.btn-ghost), .ctaband .btn:not(.btn-ghost){ --bd:var(--gold-400); }
.btn svg{width:18px;height:18px;flex:none}
.btn-ghost{--bg:transparent; --fg:var(--ink-900); --bd:var(--line-strong); box-shadow:none}
.btn-ghost:hover{--bg:var(--gold-50); --bd:var(--gold-600); box-shadow:none}
.btn-ghost.on-dark{--fg:var(--on-dark-1); --bd:hsl(210 30% 92% / .32)}
.btn-ghost.on-dark:hover{--bg:hsl(210 40% 96% / .09); --bd:hsl(210 30% 94% / .55)}
.btn-sm{min-height:44px; padding:10px 20px; font-size:14px}
.btn-full{width:100%}

.link-more{
  display:inline-flex; align-items:center; gap:8px; font-size:14px; font-weight:600;
  color:var(--blue-700); padding-block:4px;
}
.link-more span{border-bottom:1px solid hsl(208 40% 37% / .32); transition:border-color var(--fast)}
.link-more svg{width:15px;height:15px;transition:transform var(--fast) var(--ease-out)}
.link-more:hover span{border-color:var(--blue-700)}
.link-more:hover svg{transform:translateX(3px)}

/* ---------- top strip + nav ---------- */
.topbar{
  background:var(--ink-950); color:var(--on-dark-2);
  font-size:13px; letter-spacing:.01em;
}
.topbar__in{display:flex; align-items:center; justify-content:space-between; gap:20px; min-height:40px; padding-block:8px}
.topbar b{color:var(--gold-400); font-weight:600}
.topbar__langs{display:flex; gap:14px; flex-wrap:wrap}
@media (max-width:860px){ .topbar__langs{display:none} }
@media (max-width:600px){ .topbar{font-size:12.5px} .topbar .wide-only{display:none} }

.nav{
  position:sticky; top:0; z-index:60;
  background:hsl(0 0% 100% / .92); backdrop-filter:blur(14px) saturate(1.3);
  -webkit-backdrop-filter:blur(14px) saturate(1.3);
  border-bottom:1px solid transparent;
  transition:border-color var(--med) linear, box-shadow var(--med) linear;
}
.nav.is-stuck{border-bottom-color:var(--line); box-shadow:0 1px 24px hsl(212 50% 9% / .07)}
.nav__in{display:flex; align-items:center; gap:28px; min-height:76px}
.brand{display:flex; align-items:center; gap:12px; flex:none; padding-block:6px}
.brand__mark{
  width:40px;height:40px;border-radius:11px;background:var(--ink-900);
  display:grid;place-items:center;flex:none; box-shadow:inset 0 0 0 1px hsl(42 55% 71% / .5);
}
.brand__mark span{font-family:var(--serif); font-size:20px; color:var(--gold-400); line-height:1; margin-top:2px}
.brand__name{display:block; font-family:var(--serif); font-size:20px; letter-spacing:-.015em; line-height:1.15; color:var(--ink-950)}
.brand__sub{display:block; font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-3); font-weight:600; margin-top:1px}
.nav__links{display:flex; gap:2px; margin-inline:auto}
.nav__links a{
  padding:9px 13px; border-radius:var(--r-full); font-size:14.5px; font-weight:500; color:var(--text-2);
  white-space:nowrap;
  transition:background var(--fast) linear, color var(--fast) linear;
}
.nav__links a:hover{background:hsl(206 46% 93%); color:var(--ink-900)}
.nav__cta{display:flex; align-items:center; gap:10px; flex:none}
.nav__phone{display:inline-flex; align-items:center; gap:8px; font-weight:600; font-size:15px; color:var(--ink-900); padding:10px 6px}
.nav__phone svg{width:17px;height:17px;color:var(--gold-600)}
.burger{display:none; width:46px;height:46px; border:1px solid var(--line); background:transparent; border-radius:12px; place-items:center; cursor:pointer}
.burger svg{width:20px;height:20px}
@media (max-width:1080px){ .nav__links{display:none} .burger{display:grid} .nav__phone span{display:none} }
/* Zastane: tuż nad progiem menu pasek nie mieścił się w szerokości strony (przewijał ~43 px).
   Ściskamy odstępy zamiast chować telefon — to główny cel konwersji. */
@media (min-width:1081px) and (max-width:1240px){
  .nav__in{ gap:14px }
  .nav__links a{ padding:9px 9px; font-size:14px }
  .nav__cta{ gap:8px }
  .nav__phone{ padding:10px 2px; font-size:14.5px }
}
@media (max-width:640px){ .nav__cta .btn{display:none} .brand__sub{display:none} }

.mobile{
  position:fixed; inset:0; z-index:70; background:var(--ink-950); color:var(--on-dark-1);
  display:flex; flex-direction:column; padding:20px;
  opacity:0; visibility:hidden; transform:translateY(-8px);
  transition:opacity var(--med) var(--ease-out), transform var(--med) var(--ease-out), visibility var(--med);
}
.mobile.open{opacity:1; visibility:visible; transform:none}
.mobile__top{display:flex; justify-content:space-between; align-items:center}
.mobile__close{width:46px;height:46px;border-radius:12px;border:1px solid var(--line-dark);background:transparent;display:grid;place-items:center;cursor:pointer;color:inherit}
.mobile__close svg{width:20px;height:20px}
.mobile nav{display:flex; flex-direction:column; gap:2px; margin-top:32px}
.mobile nav a{font-family:var(--serif); font-size:30px; padding:12px 4px; border-bottom:1px solid var(--line-dark); color:var(--gold-300)}
.mobile__foot{margin-top:auto; display:grid; gap:12px; padding-top:24px}

/* ---------- hero ---------- */
.hero{background:var(--ink-950); color:var(--on-dark-1); overflow:hidden; position:relative}
.hero::before{
  content:""; position:absolute; inset:0;
  background:
    radial-gradient(120% 80% at 78% 8%, hsl(209 48% 21% / .9), transparent 60%),
    radial-gradient(90% 70% at 8% 100%, hsl(40 42% 26% / .34), transparent 62%);
  pointer-events:none;
}
.hero::after{
  content:""; position:absolute; inset:0; opacity:.5; pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E");
  mix-blend-mode:overlay;
}
.hero__in{position:relative; z-index:1; display:grid; grid-template-columns:1.08fr .92fr; gap:clamp(32px,5vw,80px); align-items:center;
  padding-block:clamp(56px,8vw,104px)}
@media (max-width:980px){ .hero__in{grid-template-columns:1fr; padding-block:52px 64px} }
.hero h1{margin:20px 0 22px; color:var(--gold-300)}
.hero h1 em{font-style:normal; color:inherit; font-variation-settings:"opsz" 144,"SOFT" 0,"WONK" 1}
/* letters in the gold of the mark, with the same metallic fall across them */
@supports (-webkit-background-clip:text) or (background-clip:text){
  .hero h1, .pagehead h1{
    background:linear-gradient(98deg, var(--gold-200) 2%, var(--gold-500) 48%, var(--gold-300) 96%);
    -webkit-background-clip:text; background-clip:text; color:transparent;
  }
}
@media (forced-colors: active){ .hero h1,.pagehead h1{background:none; color:var(--gold-300)} }
.hero__cta{display:flex; gap:12px; flex-wrap:wrap; margin-top:32px}
@media (max-width:560px){ .hero__cta{gap:10px} .hero__cta .btn{width:100%} }
.hero__risk{margin-top:18px; font-size:13.5px; color:var(--on-dark-3); display:flex; gap:8px 16px; flex-wrap:wrap; align-items:center}
.hero__risk i{width:4px;height:4px;border-radius:50%;background:var(--gold-500);display:inline-block;flex:none}

/* three shared rows — label, figure, note — so the four columns line up
   whatever the labels wrap to */
.hero__facts{
  margin-top:clamp(40px,5vw,64px); border-top:1px solid var(--rule-gold-dark); padding-top:26px;
  display:grid; grid-template-columns:repeat(4,1fr); gap:24px;
  grid-auto-rows:auto; grid-template-rows:auto auto auto;
}
@media (max-width:640px){ .hero__facts{grid-template-columns:repeat(2,1fr); gap:22px 18px} }
.fact{display:grid; grid-row:span 3; grid-template-rows:subgrid; row-gap:6px; align-content:start}
.fact dt{font-size:11.5px; letter-spacing:.075em; text-transform:uppercase; color:var(--on-dark-3); font-weight:600; margin:0; align-self:end}
.fact dd{margin:0}
.fact__val{font-family:var(--serif); font-size:clamp(1.3rem,2vw,1.65rem); color:var(--gold-400); line-height:1.12; align-self:end; text-wrap:balance}
.fact__note{font-family:var(--sans); font-size:12.5px; color:var(--on-dark-2); letter-spacing:0; line-height:1.4}
/* older engines without subgrid: reserve two lines for the label and the figure */
@supports not (grid-template-rows: subgrid){
  .fact{display:block}
  .fact dt{min-height:2.9em; display:flex; align-items:flex-end}
  .fact__val{min-height:2.24em; display:flex; align-items:flex-end; margin:6px 0}
}

/* hero card */
.hero__card{
  background:hsl(210 40% 96% / .06); border:1px solid var(--line-dark); border-radius:var(--r-xl);
  padding:clamp(20px,2.4vw,30px); backdrop-filter:blur(6px);
}
.hero__card h2{font-size:1.28rem; color:var(--gold-300); margin-bottom:6px}
.hero__card .lede{font-size:14.5px}
.figure{
  position:relative; border-radius:var(--r-lg); overflow:hidden; background:
   linear-gradient(150deg, hsl(210 34% 30%), hsl(211 44% 20%));
  aspect-ratio:4/3; display:grid; place-items:center; border:1px solid var(--line-dark);
}
.figure>img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:1}
.figure--portrait{aspect-ratio:4/3}
.figure--portrait>img{object-position:50% 26%}
.invite__sign{
  margin-top:18px; font-family:var(--serif); font-size:1.05rem; color:var(--gold-300); line-height:1.25;
}
.invite__sign span{
  display:block; font-family:var(--sans); font-size:12.5px; letter-spacing:.02em;
  color:var(--on-dark-3); margin-top:5px;
}
.figure--light{background:linear-gradient(150deg, hsl(210 26% 95%), hsl(210 20% 89%)); border-color:var(--line)}
.figure__ph{text-align:center; padding:20px; z-index:0}
.figure__ph svg{width:40px;height:40px;margin:0 auto 10px;color:var(--blue-400);opacity:.9}
.figure__ph b{display:block;font-family:var(--serif);font-size:17px;color:var(--on-dark-1);font-weight:400}
.figure__ph span{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--on-dark-3)}
.figure--light .figure__ph svg{color:var(--blue-600)}
.figure--light .figure__ph b{color:var(--ink-950)}
.figure--light .figure__ph span{color:var(--text-3)}
/* subtle warm grade so stock photography sits inside the palette */
.figure>img.graded{filter:saturate(.92) contrast(1.03)}
.figure__wash{position:absolute; inset:0; z-index:2; pointer-events:none;
  background:linear-gradient(200deg, hsl(211 52% 14% / .26), transparent 46%, hsl(208 44% 30% / .18))}

.brand__logo{height:46px; width:auto; max-width:250px; object-fit:contain}
@media (max-width:640px){ .brand__logo{height:34px; max-width:172px} }
.logo-light{background:var(--logo-light) no-repeat left center/contain; height:44px; width:230px; flex:none}
.mobile .logo-light{height:34px; width:178px}

.mini-review{display:flex; gap:14px; align-items:flex-start; margin-top:22px; padding-top:20px; border-top:1px solid var(--line-dark)}
.stars{display:flex; gap:2px; flex:none}
.stars svg{width:15px;height:15px;color:var(--gold-400)}
.mini-review p{font-size:14.5px; color:var(--on-dark-2); line-height:1.55}
.mini-review cite{display:block; font-style:normal; font-size:12.5px; color:var(--on-dark-3); margin-top:8px}

/* ---------- trust marquee ---------- */
.trust{background:var(--ink-900); color:var(--on-dark-2); border-top:1px solid var(--line-dark)}
.trust__in{display:flex; align-items:center; justify-content:space-between; gap:16px 34px; flex-wrap:wrap; padding-block:22px}
.trust__item{display:flex; align-items:center; gap:10px; font-size:13.5px; letter-spacing:.01em}
.trust__item svg{width:18px;height:18px;color:var(--blue-500);flex:none}

/* ---------- section head ---------- */
.sec-head{max-width:76ch}
.sec-head h2,.doc h2{margin:16px 0 14px; color:var(--gold-700)}
/* the same metal as the wordmark, run darker so it holds on a white ground */
@supports (-webkit-background-clip:text) or (background-clip:text){
  .sec-head h2,.doc h2{
    background:linear-gradient(98deg, var(--gold-800) 2%, var(--gold-600) 46%, var(--gold-700) 96%);
    -webkit-background-clip:text; background-clip:text; color:transparent;
  }
}
@media (forced-colors: active){ .sec-head h2,.doc h2{background:none; color:var(--gold-800)} }
.sec-head.center{margin-inline:auto; text-align:center}
.sec-head.center .lede{margin-inline:auto}
.sec-head.split{max-width:none; display:grid; grid-template-columns:1.08fr .92fr; gap:clamp(24px,4vw,72px); align-items:end}
.sec-head.split h2{margin-bottom:0}
.sec-head.split .lede{padding-bottom:8px}
@media (max-width:880px){ .sec-head.split{grid-template-columns:1fr; align-items:start; gap:18px} .sec-head.split .lede{padding-bottom:0} }

.faq-wrap{display:grid; grid-template-columns:.82fr 1.18fr; gap:clamp(28px,5vw,72px); align-items:start}
@media (max-width:900px){ .faq-wrap{grid-template-columns:1fr; gap:8px} }
@media (min-width:901px){ .faq-wrap>.sec-head{position:sticky; top:112px} }

/* ---------- services ---------- */
.services{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; margin-top:clamp(36px,4vw,56px)}
@media (max-width:900px){ .services{grid-template-columns:repeat(2,1fr)} }
@media (max-width:580px){ .services{grid-template-columns:1fr} }
.svc{background:var(--paper-50); display:flex; flex-direction:column; position:relative; transition:background var(--med) linear}
.svc:hover{background:#fff}
.svc__img{position:relative; aspect-ratio:2/1; overflow:hidden; background:linear-gradient(150deg,hsl(210 20% 91%),hsl(210 22% 94%)); display:grid; place-items:center}
.svc__img img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:1;
  filter:saturate(.9) contrast(1.03); transition:transform var(--slow) var(--ease-out)}
.svc:hover .svc__img img{transform:scale(1.035)}
.svc__img::after{content:""; position:absolute; inset:0; z-index:2; pointer-events:none;
  background:linear-gradient(200deg, hsl(211 52% 15% / .24), transparent 55%)}
.svc__img .svc__ico{width:30px;height:30px;color:var(--blue-700);opacity:.55;z-index:0}
.svc__body{padding:clamp(22px,2.4vw,30px); display:flex; flex-direction:column; gap:11px; flex:1}
.svc__n{position:absolute; top:clamp(22px,2.4vw,30px); right:clamp(22px,2.4vw,30px); font-family:var(--serif); font-size:15px; color:var(--gold-700); letter-spacing:.04em}
.svc h3{font-size:1.28rem; padding-right:32px}
.svc p{font-size:15px; color:var(--text-2); line-height:1.6}
.svc__tag{margin-top:auto; padding-top:16px; font-size:12px; font-weight:600; letter-spacing:.1em;
  text-transform:uppercase; color:var(--gold-700); border-top:1px solid var(--line);
  display:flex; align-items:center; justify-content:space-between; gap:10px}
.svc__tag svg{width:15px; height:15px; flex:none; opacity:0; transform:translateX(-4px);
  transition:opacity var(--med) var(--ease-out), transform var(--med) var(--ease-out)}
.svc:hover .svc__tag svg,.svc:focus-within .svc__tag svg{opacity:1; transform:none}
/* the whole card is the target, but only the title is a real link */
.svc__link{color:inherit}
.svc__link::after{content:""; position:absolute; inset:0; z-index:4}
.svc:hover .svc__link{color:var(--gold-700)}
.svc__link:focus-visible{outline:none}
.svc:focus-within{background:#fff; box-shadow:inset 0 0 0 2px var(--gold-600)}

/* ---------- feature / all-on-4 ---------- */
.feature{background:var(--ink-950); color:var(--on-dark-1); position:relative; overflow:hidden}
.feature::before{content:""; position:absolute; inset:0; background:radial-gradient(90% 90% at 100% 0%, hsl(209 46% 23% / .85), transparent 55%); pointer-events:none}
.feature__grid{position:relative; z-index:1; display:grid; grid-template-columns:.95fr 1.05fr; gap:clamp(32px,5vw,72px); align-items:center}
@media (max-width:980px){ .feature__grid{grid-template-columns:1fr} }
.feature h2{color:var(--gold-300); margin:16px 0 16px}
.steps{list-style:none; margin:0; padding:0; display:grid; gap:2px}
.steps li{display:grid; grid-template-columns:auto 1fr; gap:18px; padding:22px 0; border-top:1px solid var(--rule-gold-dark)}
.steps li:last-child{border-bottom:1px solid var(--rule-gold-dark)}
.steps b{font-family:var(--serif); font-size:1.6rem; color:var(--gold-400); line-height:1; font-weight:400}
.steps h3{font-size:1.1rem; color:var(--gold-300); margin-bottom:6px; font-family:var(--sans); font-weight:600; letter-spacing:0}
.steps p{font-size:14.5px; color:var(--on-dark-2); line-height:1.6}

/* ---------- before / after ---------- */
.gallery-grid{display:grid; grid-template-columns:1.45fr 1fr; gap:clamp(20px,2.6vw,32px); align-items:start; margin-top:clamp(28px,3.5vw,44px)}
@media (max-width:900px){ .gallery-grid{grid-template-columns:1fr} }
.ba{
  position:relative; border-radius:var(--r-lg); overflow:hidden; user-select:none;
  border:1px solid var(--line-dark); background:var(--ink-900); aspect-ratio:var(--ratio,16/11); touch-action:none;
  -webkit-touch-callout:none;
}
.ba__layer{position:absolute; inset:0}
.ba__layer svg{width:100%;height:100%}
.ba__layer img{width:100%; height:100%; object-fit:cover; display:block; user-select:none; -webkit-user-drag:none}
.ba__after{clip-path:inset(0 0 0 var(--pos,50%))}
.ba__handle{
  position:absolute; top:0; bottom:0; left:var(--pos,50%); width:2px; background:var(--gold-400);
  box-shadow:0 0 0 1px hsl(212 55% 8% / .4); pointer-events:none; touch-action:none;
}
.ba__knob{
  position:absolute; top:50%; left:50%; translate:-50% -50%; width:48px;height:48px; border-radius:50%;
  background:var(--gold-400); border:2px solid var(--ink-950); display:grid;place-items:center; cursor:ew-resize;
  box-shadow:var(--sh-lg); color:var(--ink-950);
}
.ba__knob svg{width:20px;height:20px}
.ba__tag{
  position:absolute; top:14px; padding:6px 12px; border-radius:var(--r-full); font-size:11px; font-weight:600;
  letter-spacing:.12em; text-transform:uppercase; background:hsl(212 55% 8% / .76); color:var(--on-dark-1);
  border:1px solid var(--line-dark); backdrop-filter:blur(4px);
}
.ba__tag--l{left:14px} .ba__tag--r{right:14px; background:hsl(42 55% 71% / .96); color:var(--ink-950); border-color:transparent}
.ba__range{position:absolute; inset:0; opacity:0; width:100%; height:100%; cursor:ew-resize; margin:0;
  /* gest obsługuje .ba; natywny suwak zostaje wyłącznie dla klawiatury */
  touch-action:none; pointer-events:none}
.ba__range:focus-visible + .ba__handle{outline:3px solid var(--gold-200); outline-offset:2px}

/* ---------- doctor ---------- */
.doc{display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(32px,5vw,72px); align-items:center}
@media (max-width:900px){ .doc{grid-template-columns:1fr} }
.portrait{
  position:relative; border-radius:var(--r-lg); overflow:hidden; aspect-ratio:4/5;
  background:linear-gradient(155deg, hsl(210 26% 95%), hsl(210 20% 89%));
  border:1px solid var(--line); display:grid; place-items:center;
}
.portrait>img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 22%; z-index:1; filter:saturate(.92) contrast(1.03)}
.portrait__frame{position:absolute; inset:14px; border:1px solid hsl(40 55% 58% / .5); border-radius:10px; pointer-events:none; z-index:3}
.portrait__mono{font-family:var(--serif); font-size:clamp(3rem,7vw,4.6rem); color:hsl(211 28% 46% / .45); line-height:1; letter-spacing:.02em}
.portrait__cap{position:absolute; left:0; right:0; bottom:0; padding:22px 24px; z-index:2;
  background:linear-gradient(to top, hsl(212 55% 8% / .93), hsl(212 55% 8% / .55) 45%, transparent); color:var(--on-dark-1)}
.portrait__cap b{display:block; font-family:var(--serif); font-size:1.15rem; font-weight:400; color:var(--gold-300)}
.portrait__cap span{font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--gold-400)}
.creds{list-style:none; margin:28px 0 0; padding:0; display:grid; gap:0}
.creds li{display:grid; grid-template-columns:118px 1fr; gap:20px; padding:15px 0; border-top:1px solid var(--rule-gold); font-size:15px; color:var(--text-2)}
.creds li:last-child{border-bottom:1px solid var(--rule-gold)}
.creds dt,.creds b{font-size:12px; letter-spacing:.11em; text-transform:uppercase; color:var(--text-3); font-weight:600; padding-top:3px}
@media (max-width:520px){ .creds li{grid-template-columns:1fr; gap:4px} }

/* ---------- reviews ---------- */
.reviews{background:var(--paper-100)}
.review-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:clamp(32px,4vw,52px)}
@media (max-width:900px){ .review-grid{grid-template-columns:1fr} }
.review{background:var(--paper-50); border:1px solid var(--line); border-radius:var(--r-lg); padding:clamp(22px,2.4vw,30px); display:flex; flex-direction:column; gap:16px; box-shadow:var(--sh-sm)}
.review blockquote{margin:0; font-family:var(--serif); font-size:1.22rem; line-height:1.42; color:var(--ink-950); letter-spacing:-.015em}
.review .stars svg{color:var(--gold-600)}
.review footer{margin-top:auto; padding-top:12px; border-top:1px solid var(--line); font-size:13.5px; color:var(--text-3)}
.review footer b{display:block; color:var(--text-1); font-size:14.5px; font-weight:600}

/* ---------- money / financing ---------- */
.money{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:clamp(32px,4vw,48px)}
@media (max-width:860px){ .money{grid-template-columns:1fr} }
.money__card{border:1px solid var(--line); border-radius:var(--r-lg); padding:clamp(22px,2.4vw,30px); background:var(--paper-50)}
.money__card.is-lead{background:var(--ink-950); color:var(--on-dark-1); border-color:transparent; position:relative; overflow:hidden}
.money__card.is-lead::before{content:""; position:absolute; inset:0; background:radial-gradient(80% 80% at 100% 0, hsl(40 46% 30% / .55), transparent 60%)}
.money__card h3{font-size:1.25rem; margin-bottom:10px; position:relative}
.money__card.is-lead h3{color:var(--gold-300)}
.money__card p{font-size:15px; color:var(--text-2); position:relative}
.money__card.is-lead p{color:var(--on-dark-2)}
.money__logos{display:flex; gap:10px; flex-wrap:wrap; margin-top:18px; position:relative}
.chip{border:1px solid var(--line); border-radius:var(--r-full); padding:7px 14px; font-size:12.5px; font-weight:600; color:var(--text-2); background:#fff}
/* chipy pożyczkodawców prowadzą na ich wnioski — muszą wyglądać na klikalne */
a.chip{display:inline-flex; align-items:center; transition:border-color var(--fast) var(--ease-out), color var(--fast) var(--ease-out)}
a.chip:hover{border-color:var(--gold-600); color:var(--ink-900)}
@media (hover:none){ a.chip{min-height:44px} }
.money__card.is-lead .chip{border-color:var(--line-dark); background:hsl(210 40% 96% / .08); color:var(--on-dark-1)}
.lender{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:18px; position:relative}
.lender__item{display:inline-flex}
.lender img{height:38px; width:auto; max-width:170px; object-fit:contain; background:#fff; border:1px solid var(--line); border-radius:var(--r-sm); padding:5px 10px}

/* ---------- faq ---------- */
.faq{max-width:860px; margin-top:clamp(32px,4vw,52px)}
.faq details{border-top:1px solid var(--rule-gold)}
.faq details:last-of-type{border-bottom:1px solid var(--rule-gold)}
.faq summary{
  list-style:none; cursor:pointer; padding:24px 44px 24px 0; position:relative;
  font-family:var(--serif); font-size:clamp(1.12rem,1.6vw,1.32rem); letter-spacing:-.015em; color:var(--ink-950);
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:""; position:absolute; right:6px; top:32px; width:13px; height:13px;
  border-right:1.5px solid var(--gold-600); border-bottom:1.5px solid var(--gold-600);
  rotate:45deg; transition:rotate var(--med) var(--ease-out), top var(--med) var(--ease-out);
}
.faq details[open] summary::after{rotate:225deg; top:36px}
.faq .answer{padding:0 8% 26px 0; font-size:15.5px; color:var(--text-2); line-height:1.65; max-width:68ch}
.faq details[open] .answer{animation:fade .35s var(--ease-out)}
@keyframes fade{from{opacity:0; transform:translateY(-6px)}to{opacity:1;transform:none}}

/* ---------- contact ---------- */
.contact{background:var(--ink-950); color:var(--on-dark-1); position:relative; overflow:hidden}
.contact::before{content:""; position:absolute; inset:0; background:radial-gradient(70% 80% at 10% 0, hsl(209 48% 21% / .9), transparent 60%)}
.contact__grid{position:relative; z-index:1; display:grid; grid-template-columns:1fr .92fr; gap:clamp(36px,5vw,72px)}
@media (max-width:980px){ .contact__grid{grid-template-columns:1fr} }
.contact h2{color:var(--gold-300); margin:16px 0 14px}
.info{list-style:none; padding:0; margin:32px 0 0; display:grid; gap:0}
.info li{display:grid; grid-template-columns:26px 1fr; gap:16px; padding:18px 0; border-top:1px solid var(--rule-gold-dark); align-items:start}
.info li:last-child{border-bottom:1px solid var(--rule-gold-dark)}
.info svg{width:19px;height:19px;color:var(--blue-500);margin-top:3px}
.info b{display:block; font-size:11.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--gold-500); font-weight:600; margin-bottom:4px}
.info span,.info a{font-size:16px; color:var(--on-dark-1)}
.info a:hover{color:var(--gold-400)}

.form{background:hsl(210 40% 96% / .06); border:1px solid var(--line-dark); border-radius:var(--r-xl); padding:clamp(22px,2.6vw,34px); backdrop-filter:blur(6px)}
.form h3{font-size:1.35rem; color:var(--gold-300); margin-bottom:6px}
.form>p{font-size:14px; color:var(--on-dark-2); margin-bottom:22px}
.field{margin-bottom:18px}
.field label{display:block; font-size:12px; letter-spacing:.1em; text-transform:uppercase; font-weight:600; color:var(--on-dark-3); margin-bottom:7px}
.field input,.field select,.field textarea{
  width:100%; min-height:50px; padding:13px 15px; border-radius:var(--r-md);
  background:hsl(212 55% 8% / .5); border:1px solid var(--line-dark); color:var(--on-dark-1);
  font:inherit; font-size:15.5px; transition:border-color var(--fast) linear, background var(--fast) linear;
}
.field textarea{min-height:96px; resize:vertical}
.field input::placeholder,.field textarea::placeholder{color:hsl(212 10% 60%)}
.field input:hover,.field select:hover,.field textarea:hover{border-color:hsl(210 30% 92% / .3)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none; border-color:var(--gold-400); background:hsl(212 55% 8% / .74)}
.field select{appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23dec58c' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 14px center; background-size:18px; padding-right:42px}
.field .err{display:none; font-size:12.5px; color:hsl(6 74% 68%); margin-top:6px; letter-spacing:0; text-transform:none}
.field.invalid input,.field.invalid select{border-color:hsl(6 70% 58%)}
.field.invalid .err{display:block}
.row2{display:grid; grid-template-columns:1fr 1fr; gap:16px}
@media (max-width:520px){ .row2{grid-template-columns:1fr} }
/* ---------- blok „zadzwoń" (gdy formularz zgłoszeń jest wyłączony) ----------
   Numer telefonu jest tu głównym wezwaniem do działania, więc musi być duży,
   klikalny i czytelny — nie ozdobnym napisem obok przycisku. */
/* Blok jest krótszy niż kolumna z adresem i mapą obok. Bez tego siatka rozciąga
   go na całą wysokość sąsiada i pod treścią zostaje pusty prostokąt tła. */
.zadzwon{ align-self:start }
.zadzwon h3{ font-size:1.6rem; color:var(--gold-300); margin:14px 0 10px; line-height:1.2 }
.zadzwon__lede{ font-size:15px; color:var(--on-dark-2); line-height:1.7; margin-bottom:24px }
/* .btn ma white-space:nowrap i padding 26 px — bez poniższych nadpisań napis
   „umów konsultację” w dłuższych językach (rosyjski, słowacki) rozpychał
   przycisk do 505 px przy oknie 390 px i ucinał numer telefonu poza ekranem. */
.zadzwon__cta{ display:flex; align-items:center; justify-content:center; gap:12px;
  padding:16px 14px; min-height:64px; text-align:left; white-space:normal }
.zadzwon__cta svg{ width:24px; height:24px; flex:none }
.zadzwon__cta-tresc{ display:grid; gap:1px; min-width:0 }
.zadzwon__cta-akcja{ font-size:12.5px; font-weight:600; letter-spacing:.04em; text-transform:uppercase;
  opacity:.82; line-height:1.3; text-wrap:balance }
.zadzwon__cta-numer{ font-size:clamp(19px,5vw,26px); font-weight:600; letter-spacing:.01em;
  line-height:1.15; white-space:nowrap }
.zadzwon__fakty{ display:grid; gap:14px; margin:24px 0 0 }
.zadzwon__fakty div{ display:grid; gap:3px }
.zadzwon__fakty dt{ font-size:11.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--gold-500); font-family:var(--sans); font-weight:600 }
.zadzwon__fakty dd{ margin:0; font-size:14.5px; color:var(--on-dark-2); line-height:1.6 }
.zadzwon__fakty a{ color:var(--on-dark-1); text-decoration:underline; text-underline-offset:3px }
.zadzwon__fakty a:hover{ color:var(--gold-300) }
@media (hover:none){ .zadzwon__fakty a{ display:inline-flex; align-items:center; min-height:44px } }

/* Gwiazdka przy polach obowiązkowych. Sam atrybut required słyszą czytniki
   ekranu, ale pacjent musi to ZOBACZYĆ, zanim zacznie wypełniać. */
.req{ color:var(--gold-300); font-weight:700; margin-left:1px }
.form__wymagane{ font-size:12.5px; color:var(--on-dark-3); margin:-12px 0 18px }
/* Co się stanie po wysłaniu. Bez tego pacjent wychodzi z przekonaniem, że
   wypełnienie formularza to już umówiona wizyta — a wizytę potwierdza dopiero
   rozmowa z rejestracją. */
.form__co-dalej{ display:flex; gap:10px; align-items:flex-start; margin:2px 0 16px;
  padding:12px 14px; border-radius:10px; font-size:13.5px; line-height:1.6;
  background:hsl(210 40% 96% / .07); border:1px solid var(--line-dark); color:var(--on-dark-2) }
.form__co-dalej svg{ width:16px; height:16px; color:var(--gold-400); flex:none; margin-top:3px }
.form__co-dalej b{ color:var(--on-dark-1); font-weight:600 }
.form__note{font-size:12.5px; color:var(--on-dark-3); margin-top:14px; display:flex; gap:8px; align-items:flex-start}
.form__note svg{width:14px;height:14px;color:var(--blue-500);flex:none;margin-top:3px}
.form__ok{display:none; text-align:center; padding:26px 10px}
.form__ok svg{width:46px;height:46px;color:var(--gold-400);margin:0 auto 14px}
.form.sent .form__body{display:none}
.form.sent .form__ok{display:block}

/* Uwaga: .split znaczyło dwie różne rzeczy — układ nagłówka (.sec-head.split) i ten
   komponent dzielonego zdjęcia. Nagłówek łapał stąd ciemne tło i tekst stawał się nieczytelny. */
/* Para kadrów: używana tam, gdzie mamy jedno zdjęcie z gotowym podziałem, a nie dwa ujęcia —
   suwak wprowadzałby w błąd, więc pokazujemy oba kadry obok siebie. */
.para{display:grid; grid-template-columns:1fr 1fr; gap:10px}
.para figure{position:relative; margin:0; border-radius:var(--r-lg); overflow:hidden;
  border:1px solid var(--line-dark); background:var(--ink-900)}
.para img{display:block; width:100%; height:auto}
.para figcaption{position:absolute; left:12px; bottom:12px; padding:5px 11px; border-radius:var(--r-full);
  font-size:11px; font-weight:600; letter-spacing:.12em; text-transform:uppercase;
  background:hsl(212 55% 8% / .78); color:var(--on-dark-1); border:1px solid var(--line-dark);
  backdrop-filter:blur(4px)}
.para figure:last-child figcaption{background:hsl(42 55% 71% / .96); color:var(--ink-950); border-color:transparent}
@media (max-width:520px){ .para{gap:8px} .para figcaption{font-size:10px; padding:4px 8px; left:8px; bottom:8px} }
.splitimg{position:relative; border-radius:var(--r-lg); overflow:hidden;
  border:1px solid var(--line-dark); background:var(--ink-900); aspect-ratio:var(--ratio,2/1)}
.splitimg img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}

/* ---------- map ---------- */
.map{
  position:relative; margin-top:28px; border-radius:var(--r-lg); overflow:hidden;
  aspect-ratio:16/9; border:1px solid var(--rule-gold-dark);
  background:linear-gradient(150deg, hsl(211 44% 20%), hsl(212 40% 13%));
  display:grid; place-items:center;
}
.map iframe{position:absolute; inset:0; width:100%; height:100%; border:0; z-index:1;
  filter:saturate(.85) contrast(1.03)}
.map__ph{text-align:center; padding:24px; z-index:0}
.map__ph svg{width:34px;height:34px;margin:0 auto 12px;color:var(--gold-400)}
.map__ph b{display:block; font-family:var(--serif); font-size:1.1rem; color:var(--on-dark-1); font-weight:400}
.map__ph span{font-size:12.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--on-dark-3)}
.map__go{position:absolute; right:14px; bottom:14px; z-index:2; box-shadow:var(--sh-md)}
.map__go svg{width:15px;height:15px}
@media (max-width:520px){ .map{aspect-ratio:4/3} .map__go{left:14px; right:14px} }

/* ---------- areas ---------- */
.areas{display:flex; flex-wrap:wrap; gap:8px; margin-top:22px}
.areas span{border:1px solid var(--line-dark); border-radius:var(--r-full); padding:7px 14px; font-size:13px; color:var(--on-dark-2)}

/* ---------- footer ---------- */
.foot{background:var(--ink-900); color:var(--on-dark-2); border-top:1px solid var(--line-dark)}
.foot__grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:36px; padding-block:clamp(48px,5vw,72px)}
@media (max-width:860px){ .foot__grid{grid-template-columns:1fr 1fr} }
@media (max-width:520px){ .foot__grid{grid-template-columns:1fr} }
.foot h4{font-size:12px; letter-spacing:.13em; text-transform:uppercase; color:var(--gold-500); font-family:var(--sans); font-weight:600; margin-bottom:16px}
.foot ul{list-style:none; margin:0; padding:0; display:grid; gap:10px; font-size:14.5px}
.foot a:hover{color:var(--gold-400)}
.foot__bottom{border-top:1px solid var(--line-dark); padding-block:22px; display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-size:13px; color:var(--on-dark-3)}
.foot .brand__name{color:var(--on-dark-1)}
.foot .brand__sub{color:var(--on-dark-3)}

/* ---------- sticky mobile call bar ---------- */
.callbar{
  position:fixed; left:0; right:0; bottom:0; z-index:55; display:none; gap:10px; padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  background:hsl(212 55% 8% / .94); backdrop-filter:blur(10px); border-top:1px solid var(--line-dark);
}
.callbar .btn{flex:1; min-height:50px}
@media (max-width:640px){ .callbar{display:flex} body{padding-bottom:74px} }

/* ---------- reveal ---------- */
.rv{opacity:0; transform:translateY(14px)}
.rv.in{opacity:1; transform:none; transition:opacity var(--slow) var(--ease-out), transform var(--slow) var(--ease-out)}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important; transition-duration:.01ms !important}
  .rv{opacity:1; transform:none}
}

/* ---------- case tabs ---------- */
.cases{margin-top:clamp(24px,3vw,34px)}
.cases__tabs{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:20px}
.cases__tab{
  appearance:none; border:1px solid var(--line); background:var(--paper-50); color:var(--text-2);
  border-radius:var(--r-full); padding:10px 17px; font-size:13.5px; font-weight:600; cursor:pointer;
  min-height:42px; white-space:nowrap;
  transition:border-color var(--fast) linear, color var(--fast) linear, background var(--fast) linear;
}
.cases__tab:hover{border-color:var(--gold-600); color:var(--ink-900)}
.cases__tab[aria-selected="true"]{background:var(--ink-900); border-color:var(--ink-900); color:var(--gold-300)}
.case[hidden]{display:none !important}
.teaser{display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(24px,4vw,64px); align-items:center}
.teaser .btn{white-space:normal}
@media (max-width:820px){ .teaser{grid-template-columns:1fr; gap:24px} .teaser .btn{width:100%} }
.cases__note{margin-top:18px; font-size:12.5px; color:var(--text-3); max-width:70ch}

/* ---------- procedure ---------- */
.proc{background:var(--ink-950); color:var(--on-dark-1); position:relative; overflow:hidden}
.proc::before{content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(80% 80% at 12% 0%, hsl(209 48% 21% / .85), transparent 58%),
             radial-gradient(60% 70% at 100% 100%, hsl(40 44% 26% / .28), transparent 62%)}
.proc__grid{position:relative; z-index:1; display:grid; grid-template-columns:.82fr 1.18fr;
  gap:clamp(28px,4.5vw,72px); align-items:center}
@media (max-width:900px){ .proc__grid{grid-template-columns:1fr} }
.proc h2{color:var(--gold-300)}
.proc__stage{
  position:relative; border-radius:var(--r-lg); overflow:hidden; aspect-ratio:640/802;
  background:var(--ink-900); border:1px solid var(--rule-gold-dark); box-shadow:var(--sh-lg);
}
.proc__stage img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; transition:opacity 700ms var(--ease-out);
}
.proc__stage img.is-on{opacity:1}
.proc__bar{position:absolute; left:0; right:0; bottom:0; height:3px; background:hsl(212 55% 8% / .5); z-index:2}
.proc__bar span{display:block; height:100%; background:var(--gold-400); transform:scaleX(0); transform-origin:left}
.proc__steps{list-style:none; margin:26px 0 0; padding:0; display:grid; gap:0; counter-reset:none}
.proc__step{
  display:grid; grid-template-columns:auto 1fr; gap:18px; padding:16px 0;
  border-top:1px solid var(--rule-gold-dark); cursor:pointer; opacity:.45;
  transition:opacity var(--med) linear;
}
.proc__step:last-child{border-bottom:1px solid var(--rule-gold-dark)}
.proc__step:hover{opacity:.8}
.proc__step.is-on{opacity:1}
.proc__step b{font-family:var(--serif); font-size:1.35rem; color:var(--gold-400); line-height:1; font-weight:400}
.proc__step h3{font-family:var(--sans); font-size:1.02rem; font-weight:600; letter-spacing:0; color:var(--gold-300); margin-bottom:4px}
.proc__step p{font-size:14.5px; color:var(--on-dark-2); line-height:1.6; max-height:0; overflow:hidden;
  transition:max-height var(--slow) var(--ease-out)}
.proc__step.is-on p{max-height:7em}
@media (prefers-reduced-motion: reduce){
  .proc__step p{max-height:none}
  .proc__step{opacity:1}
}

/* ---------- obszar dotyku (WCAG 2.5.5 / Apple HIG: 44 px) ----------
   Linki w listach stopki SAME mają wysokość celu, zamiast rozpychać się
   pseudo-elementem. Poprzedni wariant dawał +7 px z góry i z dołu przy
   gap:10 px — obszary dwóch sąsiednich pozycji zachodziły wtedy na siebie
   po 4 px i palec celujący w „All-on-4" trafiał w „Dental implants".
   Reszta drobnych linków (pasek górny, dane teleadresowe) zostaje przy
   pseudo-elemencie, bo stoi pojedynczo i nie ma z czym kolidować. */
@media (hover:none){
  .foot a, .topbar a[href^="tel:"], .info a{ position:relative }
  .foot a::after, .topbar a[href^="tel:"]::after, .info a::after{
    content:""; position:absolute; left:0; right:0; top:-7px; bottom:-7px;
  }
  .foot ul{ gap:2px }
  .foot ul a{ display:flex; align-items:center; min-height:44px }
  .foot ul a::after{ content:none }          /* element jest już celem — pseudo tylko by nachodziło */
  /* telefon w pasku górnym: najczęściej dotykany element na stronie gabinetu */
  .nav__phone{ min-height:44px; min-width:44px; justify-content:center }
}

/* Komunikaty formularza czekają w treści strony, żeby dało się je przetłumaczyć —
   widoczne nigdy nie są, skrypt czyta z nich sam tekst. */
.form__teksty{ display:none }

/* ---------- dzisiejszy CSS (wszystko progresywne — starsza przeglądarka renderuje jak dotąd) ---------- */

/* 1. Łamanie tekstu: nagłówki równymi wierszami, akapity bez sierot na końcu. */
h1,h2,h3,.h1,.h2{ text-wrap:balance }
p,li,dd,figcaption,blockquote{ text-wrap:pretty }

/* 3. Zapytania kontenerowe: kafelki i karty reagują na SWOJĄ szerokość, nie na szerokość okna —
      dzięki temu ten sam kafelek wygląda dobrze w siatce trzy- i jednokolumnowej. */
@supports (container-type: inline-size){
  .svc{ container-type:inline-size; container-name:kafelek }
  @container kafelek (max-width: 300px){
    .svc__body{ padding-inline:clamp(16px,5cqi,22px) }
    .svc__tag{ font-size:11px }
  }
  .money__card{ container-type:inline-size; container-name:karta }
  @container karta (max-width: 260px){
    .money__card h3{ font-size:1.12rem }
  }
}

/* 4. Stany hover liczone z koloru marki zamiast wklepywanych ręcznie wartości —
      jeden token zmienia wszystkie odcienie pochodne. */
@supports (color: color-mix(in oklab, red, blue)){
  .btn-ghost:hover{ background:color-mix(in oklab, var(--gold-400) 14%, transparent) }
  .faq summary:hover{ background:color-mix(in oklab, var(--gold-400) 7%, transparent) }
  .cases__tab:hover{ border-color:color-mix(in oklab, var(--gold-600) 60%, transparent) }
}

/* 5. Wysokość okna liczona dynamicznie — na telefonie pasek adresu nie ucina treści. */
@supports (height: 100dvh){
  .mobile{ height:100dvh; max-height:100dvh }
}

/* 6. :has() — karta z aktywnym fokusem podnosi się cała, nie tylko sam link w środku. */
@supports selector(:has(*)){
  .money__card:has(a:focus-visible),.rev:has(a:focus-visible){ outline:2px solid var(--gold-600); outline-offset:3px }
  .field:has(input:focus-visible),.field:has(textarea:focus-visible),.field:has(select:focus-visible){ --etykieta:var(--gold-700) }
  .field:has(input:focus-visible) label,.field:has(textarea:focus-visible) label,.field:has(select:focus-visible) label{ color:var(--etykieta) }
}

/* 7. Płynne przejście między podstronami tam, gdzie przeglądarka to potrafi
      (wersja jednoplikowa woła startViewTransition; reszta po prostu tego nie widzi). */
@view-transition{ navigation:auto }
@media (prefers-reduced-motion:reduce){
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){ animation:none !important }
}

/* Kotwice: przyklejony pasek nawigacji ma ~76 px — bez tego zapasu cel przewijania chowa się pod nim. */
section[id],[id^="book"],[id^="gallery"],[id^="services"],[id^="implants"],[id^="cost"],[id^="doctor"]{
  scroll-margin-top:clamp(88px,11vh,112px);
}
html{ scroll-behavior:smooth }
@media (prefers-reduced-motion:reduce){ html{ scroll-behavior:auto } }

/* ---------- treść bez JavaScriptu ----------
   Animacje wejścia startują z opacity:0 i klasę „in" dodaje skrypt. Przy wyłączonym
   JavaScripcie strona zostawała pusta — poniżej wyłączamy ukrycie w takim wypadku. */
@media (scripting: none){
  .rv{ opacity:1 !important; transform:none !important }
  .page[hidden]{ display:block !important }
}

/* ---------- pasek nawigacji: dłuższe języki (rosyjski, portugalski) ----------
   „Запись на консультацию" wychodziło poza ekran przy 1280 px. */
@media (max-width:1400px){
  .nav__in{ gap:16px }
  .nav__links a{ padding-inline:10px }
  .nav__cta{ gap:8px }
  .nav__cta .btn{ font-size:14px; padding-inline:15px }
  .nav__phone{ padding-inline:2px }
}
@media (max-width:1240px){
  .nav__cta .btn{ font-size:13.5px; padding-inline:13px }
  .nav__phone{ font-size:14px }
}

/* Rosyjskie etykiety są najdłuższe — dla tej wersji pasek przechodzi w menu wcześniej,
   zamiast ściskać tekst do nieczytelności. */
@media (max-width:1200px){
  html[lang="ru"] .nav__links{ display:none }
  html[lang="ru"] .burger{ display:grid }
  html[lang="ru"] .nav__phone span{ display:none }
}

/* ---------- 320 px: najwęższe telefony (WCAG 1.4.10 Reflow) ---------- */
@media (max-width:360px){
  .shell{ width:min(100% - 24px, var(--shell)) }
  .nav__cta{ gap:6px }
  .btn{ padding-inline:14px; font-size:14px }
  .hero__cta{ gap:8px }
  .hero__cta .btn{ width:100% }
  .topbar__in{ font-size:12px }
}

/* ---------- przewijanie menu mobilnego ----------
   Po dodaniu listy języków zawartość menu bywa wyższa niż ekran (przy 360 px zawsze).
   Bez tego trzy ostatnie języki były fizycznie nieklikalne. */
.mobile{ overflow-y:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain }
.mobile .lang__menu{ max-height:none }
@supports (height:100dvh){ .mobile{ max-height:100dvh } }

/* ---------- najwęższe telefony: rosyjskie etykiety nie mieściły się w przyciskach ---------- */
@media (max-width:400px){
  .hero__cta{ flex-direction:column; align-items:stretch }
  .hero__cta .btn{ width:100%; justify-content:center; padding-inline:14px; font-size:14.5px;
                   white-space:normal; line-height:1.25; text-align:center }
  .callbar .btn{ font-size:13.5px; padding-inline:12px; white-space:normal; line-height:1.2 }
  .callbar{ gap:8px }
  html[lang="ru"] .hero__cta .btn,html[lang="ru"] .callbar .btn{ font-size:13.5px; letter-spacing:0 }
}
/* 320 px: najdłuższe etykiety (rosyjski) muszą się zawinąć, a nie wyjechać poza ekran */
@media (max-width:340px){
  .btn{ white-space:normal; line-height:1.25; padding-inline:12px; font-size:13.5px; min-height:auto; padding-block:11px }
  .callbar{ padding-inline:10px }
  .callbar .btn{ font-size:12.5px; padding-inline:10px }
}

/* ---------- routing shell ---------- */
.page[hidden]{display:none !important}
.nav__links a.is-active{color:var(--ink-900); background:var(--gold-50); box-shadow:inset 0 0 0 1px hsl(40 55% 42% / .35)}
.mobile nav a.is-active{color:var(--gold-200); text-decoration:underline; text-underline-offset:7px; text-decoration-color:var(--gold-500)}
.pagehead{background:var(--ink-950); color:var(--on-dark-1); position:relative; overflow:hidden}
.pagehead::before{content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(90% 90% at 88% 0%, hsl(209 48% 21% / .9), transparent 58%),
             radial-gradient(70% 80% at 0% 100%, hsl(40 42% 26% / .32), transparent 60%)}
.pagehead__in{position:relative; z-index:1; padding-block:clamp(52px,6.5vw,92px)}
.pagehead h1{color:var(--gold-300)}
.ctaband{background:var(--ink-900); color:var(--on-dark-1); border-top:1px solid var(--line-dark); position:relative; overflow:hidden}
.ctaband::before{content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(80% 90% at 92% 10%, hsl(209 48% 22% / .8), transparent 60%),
             radial-gradient(60% 80% at 4% 100%, hsl(40 44% 26% / .3), transparent 62%)}
.ctaband__in{position:relative; z-index:1; display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(28px,4vw,64px);
  align-items:center; padding-block:clamp(56px,6vw,84px)}
.ctaband__act{display:grid; gap:12px; justify-items:start}
.ctaband__act .btn{width:100%; max-width:340px}
@media (max-width:860px){ .ctaband__in{grid-template-columns:1fr} .ctaband__act .btn{max-width:none} }
.crumbs{font-size:12.5px; color:var(--on-dark-3); letter-spacing:.02em}
.crumbs a:hover{color:var(--gold-300)}

/* ---------- przełącznik języka ---------- */
.lang{position:relative; flex:none}
.lang__btn{
  display:inline-flex; align-items:center; flex-wrap:nowrap; white-space:nowrap;
  gap:7px; height:38px; padding:0 10px 0 8px;
  border:1px solid var(--line-dark); border-radius:var(--r-full); background:transparent;
  color:var(--on-dark-1); font:inherit; font-size:13px; font-weight:600; letter-spacing:.04em;
  cursor:pointer; transition:border-color var(--fast) var(--ease-out), background var(--fast) var(--ease-out);
}
.lang__btn:hover{ border-color:var(--gold-600); background:color-mix(in oklab, var(--gold-400) 10%, transparent) }
.lang__btn[aria-expanded="true"]{ border-color:var(--gold-600) }
.nav .lang__btn{ color:var(--text-1); border-color:var(--line) }
.nav .lang__btn:hover{ border-color:var(--gold-600) }
.lang__now{flex:none}
.lang__flag{width:20px; height:14px; flex:none; border-radius:2px; flex:none; box-shadow:0 0 0 1px hsl(212 30% 10% / .18)}
.lang__chev{width:11px; height:11px; opacity:.6; transition:rotate var(--fast) var(--ease-out)}
.lang__btn[aria-expanded="true"] .lang__chev{ rotate:180deg }
.lang__menu{
  position:absolute; top:calc(100% + 8px); right:0; z-index:60; min-width:186px; margin:0; padding:6px;
  list-style:none; border-radius:var(--r-md); border:1px solid var(--line);
  background:var(--paper-50); box-shadow:var(--sh-lg);
}
.lang__menu[hidden]{ display:none }
.lang__menu li{ margin:0 }
.lang__item{
  display:flex; align-items:center; gap:10px; width:100%; padding:9px 10px; border:0; border-radius:8px;
  background:transparent; color:var(--text-1); font:inherit; font-size:14px; text-align:left;
  text-decoration:none; cursor:pointer;
}
.lang__item:hover,.lang__item:focus-visible{ background:var(--paper-100) }
.lang__item[aria-current="true"]{ background:color-mix(in oklab, var(--gold-400) 22%, transparent); font-weight:600 }
.lang__code{ font-size:12px; font-weight:700; letter-spacing:.06em; color:var(--text-3); margin-left:auto }
.lang__item[aria-current="true"] .lang__code{ color:var(--gold-700) }
/* na ciaśniejszych ekranach przycisk kurczy się do samej flagi — język zostaje dostępny wszędzie */
@media (max-width:1240px){
  .nav .lang__now,.nav .lang__chev{ display:none }
  .nav .lang__btn{ padding-inline:8px; gap:0 }
}
.mobile .lang{ display:block; margin-top:22px }
.mobile .lang__menu{ position:static; margin-top:8px; box-shadow:none; width:100% }
.mobile .lang__btn{ color:var(--on-dark-1) }
