/* ==========================================================================
   IPSiR (Elementor) - uzupełnienia, których nie da się ustawić w darmowym Elementorze.
   Kolory przez zmienne globalne Elementora (Site Settings), więc zmiana koloru w panelu działa też tutaj.
   ========================================================================== */

html{ scroll-behavior:smooth; }
body{ -webkit-font-smoothing:antialiased; background:#fff; }
a, a:hover, a:active{ color:inherit; text-decoration:none; }
.elementor-widget-text-editor p{ margin:0 0 1em; }
.elementor-widget-text-editor p:last-child{ margin-bottom:0; }
.elementor-widget-heading .elementor-heading-title a{ color:inherit; }
.ips-maxw-520{ max-width:520px; }
.ips-maxw-280{ max-width:280px; }
.elementor-element.ips-cta-text{ max-width:560px !important; margin-left:auto !important; margin-right:auto !important; }

/* ---------------- Nagłówek: górny pasek odjeżdża, pasek z menu zostaje przyklejony ---------------- */
.ips-masthead{ position:sticky; top:-37px; z-index:50; }
.admin-bar .ips-masthead{ top:-5px; }
@media (max-width:640px){ .ips-masthead, .admin-bar .ips-masthead{ top:0; } }
.ips-header{ -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); position:relative; }
.ips-topbar a:hover{ color:#fff; }
.ips-nav-phone-link a:hover{ color:var(--e-global-color-accent); text-decoration:underline; text-underline-offset:2px; }
.ips-nav-phone .elementor-heading-title{ white-space:nowrap; }
.ips-logo img{ display:block; }

/* Menu z Wygląd -> Menu */
.ips-nav-widget .main-nav ul{ display:flex; gap:32px; align-items:center; list-style:none; margin:0; padding:0; }
.ips-nav-widget .main-nav a{ font-family:var(--e-global-typography-text-font-family), sans-serif; font-weight:500; font-size:.95rem; line-height:1.6; color:var(--e-global-color-ipsink); transition:color .2s; }
.ips-nav-widget .main-nav a:hover,
.ips-nav-widget .main-nav .current-menu-item > a,
.ips-nav-widget .main-nav .current-page-ancestor > a{ color:var(--e-global-color-accent); }
.nav-burger{ display:none; cursor:pointer; color:var(--e-global-color-ipsdark); line-height:1; padding:6px; }
.nav-burger svg{ display:block; width:1.4rem; height:1.4rem; }
.nav-burger .burger-close{ display:none; }

@media (max-width:860px){
  .ips-nav-widget{ display:contents; }
  .ips-nav-widget .elementor-shortcode{ display:contents; }
  .nav-burger{ display:inline-flex; align-items:center; }
  .ips-header .main-nav{
    position:absolute; top:100%; left:0; right:0;
    background:#fff; border-bottom:1px solid var(--e-global-color-ipsline);
    box-shadow:0 12px 32px -12px rgba(29,48,44,.18);
    max-height:0; overflow:hidden; transition:max-height .28s ease;
  }
  .ips-nav-widget .main-nav ul{ flex-direction:column; align-items:stretch; gap:0; padding:8px 24px 16px; }
  .ips-nav-widget .main-nav li{ border-bottom:1px solid var(--e-global-color-ipsline); }
  .ips-nav-widget .main-nav li:last-child{ border-bottom:none; }
  .ips-nav-widget .main-nav a{ display:block; padding:14px 4px; font-size:1rem; }
  .ips-header:has(.nav-toggle:checked) .main-nav{ max-height:70vh; }
  .ips-header:has(.nav-toggle:checked) .burger-open{ display:none; }
  .ips-header:has(.nav-toggle:checked) .burger-close{ display:block; }
}

/* ---------------- Typografia pomocnicza ---------------- */
.elementor-widget-heading.ips-eyebrow .elementor-heading-title{ display:inline-flex; align-items:center; gap:8px; }
.ips-eyebrow .elementor-heading-title::before{ content:""; width:22px; height:2px; background:var(--e-global-color-secondary); display:inline-block; }

/* ---------------- Zdjęcia (.photo-frame) ---------------- */
.ips-photo img{ display:block; width:100%; min-height:260px; object-fit:cover; }
.ips-photo-tall img{ min-height:420px; }
.ips-photo-round img{ min-height:0; }
.ips-photo-fixed{ overflow:hidden; border-radius:16px; box-shadow:0 4px 18px rgba(29,48,44,.08); }
.ips-photo-fixed img{ height:260px !important; box-shadow:none !important; }
.ips-photo-profile img{ min-height:420px; aspect-ratio:4/5; height:auto; }
@media (max-width:980px){ .ips-photo-profile img{ aspect-ratio:16/9; } }
.ips-hero-media{ position:relative; }

/* ---------------- Karty i przyciski ---------------- */
.ips-card{ transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.ips-card:hover{ transform:translateY(-4px); box-shadow:0 12px 32px -12px rgba(29,48,44,.18) !important; border-color:var(--e-global-color-ipslite) !important; }
.ips-btn .elementor-button{ transition:.2s ease; white-space:nowrap; }
.ips-btn-primary .elementor-button:hover{ transform:translateY(-1px); }
@media (max-width:980px){ .ips-btn-wrap .elementor-button{ white-space:normal; } }
.ips-link .elementor-button{ background:none !important; }
.e-con.ips-statbox{ flex:1 1 0 !important; min-width:160px; width:auto !important; }
.ips-hero-copy-narrow{ max-width:720px; }

/* ---------------- Opinie: przewijana karuzela ---------------- */
.ips-scroller{ overflow-x:auto; scroll-snap-type:x mandatory; }
.ips-scroller::-webkit-scrollbar{ height:6px; }
.ips-scroller::-webkit-scrollbar-thumb{ background:var(--e-global-color-ipsline); border-radius:10px; }
.ips-testi-card{ scroll-snap-align:start; flex-shrink:0 !important; }
/* "Przewiń, aby zobaczyć..." niżej niż w makiecie - w Safari pasek przewijania nachodził na ten napis (uwaga klienta) */
.elementor .ips-scroller + .elementor-widget-heading{ margin-top:28px !important; }

/* ---------------- FAQ ---------------- */
.ips-faq .e-n-accordion-item[open] > .e-n-accordion-item-title{ padding-bottom:12px; }
/* wysokość wiersza pytania = wysokość znaku "+" z makiety (1.4rem), dłuższe pytania rosną normalnie */
.ips-faq .e-n-accordion-item-title-header{ min-height:35.84px; display:flex; align-items:center; }
.ips-faq .e-n-accordion-item-title{ align-items:center; }
.ips-faq-answer a{ color:var(--e-global-color-accent); font-weight:600; text-decoration:underline; text-underline-offset:2px; }
.ips-faq-answer a:hover{ color:var(--e-global-color-ipsdark); }
.ips-faq-answer a.contact-strong{ font-weight:700; font-size:1.05em; white-space:nowrap; }

/* ---------------- Treść podstron ---------------- */
.ips-content-text a{ color:var(--e-global-color-accent); font-weight:600; text-decoration:underline; text-underline-offset:2px; }
@media (min-width:981px){ .ips-side-card{ position:sticky !important; top:100px; } }

/* ---------------- Cennik ---------------- */
.pricing-table{ width:100%; border-collapse:collapse; background:#fff; border-radius:16px; overflow:hidden; box-shadow:0 4px 18px rgba(29,48,44,.08); margin:0; border:0; }
.pricing-table th, .pricing-table td{ padding:18px 24px; text-align:left; border:0; border-bottom:1px solid var(--e-global-color-ipsline); font-size:.95rem; line-height:1.6; background:transparent; vertical-align:middle; }
.pricing-table thead th{ background:var(--e-global-color-ipssand2); font-family:var(--e-global-typography-primary-font-family), serif; font-weight:600; color:var(--e-global-color-ipsdark); }
.pricing-table td:last-child, .pricing-table th:last-child{ text-align:right; font-weight:700; color:var(--e-global-color-accent); white-space:nowrap; }
.pricing-table tbody tr:hover > td, .pricing-table tbody tr:nth-child(odd) > td{ background:transparent; }
.ips-pricing-note a{ color:inherit; }
@media (max-width:640px){
  .pricing-table th, .pricing-table td{ padding:14px 10px; font-size:.86rem; }
  .pricing-table th:first-child, .pricing-table td:first-child{ padding-left:16px; }
  .pricing-table th:last-child, .pricing-table td:last-child{ padding-right:16px; }
}
@media (max-width:400px){
  .pricing-table td:last-child, .pricing-table th:last-child{ white-space:normal; }
  .pricing-table th, .pricing-table td{ font-size:.8rem; padding-left:8px; padding-right:8px; }
}

/* ---------------- Kontakt ---------------- */
.ips-map iframe{ display:block; border-radius:16px; box-shadow:0 4px 18px rgba(29,48,44,.08); }
/* mapa ładowana po kliknięciu (RODO) - zaślepka w miejscu mapy */
.ips-map-consent{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; padding:24px; text-align:center;
  border-radius:16px; box-shadow:0 4px 18px rgba(29,48,44,.08); border:1px solid var(--e-global-color-ipsline);
  background:var(--e-global-color-ipssand2) radial-gradient(circle at 1px 1px, rgba(29,48,44,.07) 1px, transparent 0) 0 0/18px 18px; color:var(--e-global-color-ipsdark); }
.ips-map-consent svg{ color:var(--e-global-color-accent); }
.ips-map-consent p{ margin:0; }
.ips-map-address{ font-family:var(--e-global-typography-primary-font-family), serif; font-weight:600; font-size:1.1rem; }
.ips-map-note{ max-width:440px; font-size:.82rem; line-height:1.5; color:var(--e-global-color-ipsink); opacity:.8; }
.ips-map-actions{ display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:10px 20px; margin-top:6px !important; }
.ips-map-load{ padding:11px 26px; border-radius:100px; border:0; background:var(--e-global-color-secondary); color:#fff; font:inherit; font-weight:600; font-size:.92rem; cursor:pointer; transition:.2s ease; }
.ips-map-load:hover, .ips-map-load:focus-visible{ background:var(--e-global-color-accent); color:#fff; }
.ips-map-actions a{ color:var(--e-global-color-accent); font-weight:600; font-size:.92rem; text-decoration:underline; text-underline-offset:2px; }
/* telefony i e-mail widocznie klikalne (jak linki w FAQ) - uwaga klienta, że linków "nie widać" */
.ips-info-text a{ color:var(--e-global-color-accent); font-weight:600; text-decoration:underline; text-underline-offset:2px; }
.ips-info-text a:hover{ color:var(--e-global-color-ipsdark); }
.form-card .form-row{ margin-bottom:18px; }
.form-card .form-row label{ display:block; font-size:.85rem; font-weight:600; margin-bottom:6px; color:var(--e-global-color-ipsdark); line-height:1.6; }
.form-card .wpcf7-form-control-wrap{ display:block; }
.form-card .form-row input, .form-card .form-row textarea{
  width:100%; padding:12px 14px; border:1px solid var(--e-global-color-ipsline); border-radius:8px;
  font-family:inherit; font-size:.95rem; line-height:normal; color:var(--e-global-color-ipsink); background:var(--e-global-color-ipssand);
}
.form-card .form-row textarea{ min-height:120px; resize:vertical; }
.form-card .form-consent{ display:flex; gap:10px; align-items:flex-start; font-size:.82rem; color:var(--e-global-color-text); margin-bottom:20px; line-height:1.6; }
.form-card .form-consent .wpcf7-form-control-wrap{ flex:1; }
.form-card .form-consent .wpcf7-form-control, .form-card .form-consent .wpcf7-list-item{ display:block; margin:0; }
.form-card .form-consent label{ display:flex; gap:10px; align-items:flex-start; cursor:pointer; }
.form-card .form-consent input{ margin:4px 3px 3px 4px; flex-shrink:0; }
.form-card form{ position:relative; }
.form-card .wpcf7-submit{
  width:100%; display:inline-flex; justify-content:center; padding:15px 30px; border-radius:100px; border:2px solid transparent;
  background:var(--e-global-color-secondary); color:#fff; font-family:inherit; font-weight:600; font-size:.98rem; line-height:1.6; cursor:pointer; transition:.2s ease;
}
.form-card .wpcf7-submit:hover{ background:var(--e-global-color-accent); transform:translateY(-1px); }
.form-card .wpcf7-spinner{ position:absolute; right:14px; margin:-42px 0 0; }
.form-card .wpcf7-not-valid-tip{ font-size:.8rem; color:#B3261E; margin-top:4px; }
.form-card .wpcf7 form .wpcf7-response-output{ margin:18px 0 0; padding:12px 14px; border-radius:8px; font-size:.88rem; }

/* ---------------- Stopka ---------------- */
.ips-footer .elementor-widget-text-editor p{ color:var(--e-global-color-text); }
.ips-footer-list a:hover .elementor-icon-list-text, .ips-menu-list a:hover{ color:#fff !important; }
.ips-menu-list ul{ list-style:none; margin:0; padding:0; }
.ips-menu-list li{ margin-bottom:10px; font-size:.9rem; line-height:1.6; color:var(--e-global-color-ipsfoot); }
.ips-social .elementor-social-icon{ transition:background .2s; }
.ips-social .elementor-social-icon:hover{ background-color:var(--e-global-color-secondary) !important; }

/* ---------------- Przyklejony pasek na telefonie ---------------- */
.ips-sticky-cta{ position:fixed !important; left:0; right:0; bottom:0; z-index:60; }
@media (max-width:640px){ body{ padding-bottom:64px; } }

/* ---------------- Geometria widgetów Elementora (zgodność z makietą) ---------------- */
.elementor-widget-heading .elementor-heading-title{ display:block; }
.elementor-element.ips-maxw-520{ max-width:520px !important; }
.elementor-element.ips-maxw-280{ max-width:280px !important; }
.elementor-element.ips-hero-copy-narrow{ max-width:720px !important; }
.ips-photo-fixed{ height:160px; }
/* listy z ikonami: ikona o szerokości glifu (jak ikona fontowa), odstęp = "Wcięcie tekstu" w panelu */
.ips-il .elementor-icon-list-icon svg{ width:auto !important; margin:0 !important; }
.ips-il .elementor-icon-list-icon + .elementor-icon-list-text{ padding-inline-start:0 !important; }
.ips-checklist .elementor-icon-list-icon, .ips-arrowlist .elementor-icon-list-icon{ margin-top:.3em; }
.ips-faq .e-n-accordion-item-title-header{ flex:1; }
.ips-faq .e-n-accordion-item-title-text{ text-align:left; }
/* przycisk bez dodatkowej linii tekstu w opakowaniu (w makiecie przycisk jest elementem flex) */
.elementor-widget-button.ips-btn{ display:flex; }
.elementor-widget-button.ips-btn.elementor-align-center{ justify-content:center; }
.elementor-widget-button.ips-btn.elementor-align-right{ justify-content:flex-end; }
.ips-cat-icon .elementor-icon-wrapper{ line-height:0; display:flex; }
@media (min-width:981px){ .e-con.ips-side-card{ min-width:auto !important; } }
.ips-sticky-cta > .elementor-widget{ flex:1 1 0 !important; }
.form-card .form-consent label, .form-card .form-consent .wpcf7-list-item-label{ line-height:1.6; }
.pricing-table thead:first-child tr:first-child th{ border-block-start:0; }
.ips-faq-answer a.contact-strong{ line-height:1.6; }
