/*
Theme Name: Lipka Hausmeisterservice
Theme URI: https://lipka-hausmeisterservice.de
Author: Lipka Hausmeisterservice
Description: WordPress frontend matching the current Housemeister public WebApp design.
Version: 2.1.0
Requires at least: 6.4
Requires PHP: 8.0
Text Domain: hm-hausmeister
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/

:root {
  --background: oklch(0.19 0.012 250);
  --foreground: oklch(0.96 0.005 250);
  --surface: oklch(0.235 0.014 252);
  --surface-strong: oklch(0.275 0.016 252);
  --primary: oklch(0.79 0.16 71);
  --primary-foreground: oklch(0.2 0.03 60);
  --secondary: oklch(0.3 0.016 252);
  --muted-foreground: oklch(0.72 0.014 250);
  --accent: oklch(0.32 0.02 252);
  --border: oklch(0.34 0.016 252);
  --destructive: oklch(0.62 0.2 25);
  --radius: .5rem;
  --radius-xl: .75rem;
  --max: 72rem;
  --shadow-panel: 0 24px 60px -30px oklch(0 0 0 / .8);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--background);
  color: var(--foreground);
  font-family: "Source Sans 3", ui-sans-serif, system-ui, sans-serif;
  font-size: 16px;
  line-height: 1.6;
}
body, button, input, select, textarea { font-family: "Source Sans 3", ui-sans-serif, system-ui, sans-serif; }
/* Sticky footer — body jako kontener flex: przy krótkiej stronie stopka
   na dole viewportu, przy długiej naturalnie po treści (bez position:fixed,
   bez zasłaniania treści). Wygląd stopki bez zmian. */
body.hm-theme { display:flex; flex-direction:column; min-height:100vh; }
body.hm-theme > main { flex:1 1 auto; }
h1,h2,h3,h4 { font-family: "Barlow Condensed", ui-sans-serif, system-ui, sans-serif; letter-spacing: .01em; }
h1,h2,h3,p { margin-top: 0; }
a { color: inherit; }
img { max-width: 100%; height: auto; }
button,input,select,textarea { font: inherit; }

.screen-reader-text { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
.screen-reader-text:focus { width:auto!important; height:auto!important; clip:auto!important; padding:10px 14px!important; margin:10px!important; z-index:99999; background:var(--background); color:var(--foreground); }

.lh-container { width:min(var(--max), calc(100% - 2rem)); margin-inline:auto; }

/* Header = public WebApp SiteHeader */
.site-header {
  position:sticky; top:0; z-index:40;
  border-bottom:1px solid color-mix(in oklch, var(--border) 80%, transparent);
  background:color-mix(in oklch, var(--background) 85%, transparent);
  backdrop-filter:blur(12px);
}
/* Pasek administracyjny WP (body.admin-bar) ma z-index 99999 i zasłania sticky
   header na desktopie (wys. 32px). Na mobile nadpisanie 46px istnieje już w
   bloku ≤780px poniżej. */
body.admin-bar .site-header { top:32px; }
.site-header__inner { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding-block:.75rem; }
.site-branding { display:flex; align-items:center; gap:.5rem; text-decoration:none; }
.site-branding__mark { display:flex; width:2.25rem; height:2.25rem; align-items:center; justify-content:center; border-radius:.375rem; background:var(--primary); color:var(--primary-foreground); font-family:"Barlow Condensed",sans-serif; font-weight:800; letter-spacing:.04em; }
.site-branding__name { font-family:"Barlow Condensed",sans-serif; font-size:1.25rem; line-height:1; letter-spacing:.04em; text-transform:uppercase; }
.site-branding__tagline { display:block; margin-top:.2rem; color:var(--muted-foreground); font-size:.62rem; letter-spacing:.3em; }
.custom-logo-link { display:flex; }
.custom-logo { max-height:4rem; width:auto; }
.site-nav ul { display:flex; align-items:center; gap:.25rem; margin:0; padding:0; list-style:none; }
.site-nav a { display:block; border-radius:.375rem; padding:.5rem .75rem; color:var(--muted-foreground); text-decoration:none; font-size:.875rem; transition:background .15s,color .15s,opacity .15s; }
.site-nav a:hover,.site-nav .current-menu-item > a { background:var(--secondary); color:var(--foreground); }
.site-nav li:last-child a { background:var(--primary); color:var(--primary-foreground); font-weight:500; }
.site-nav li:last-child a:hover { opacity:.9; }
.menu-toggle { display:none; border:1px solid var(--border); border-radius:.375rem; background:var(--surface); color:var(--foreground); padding:.5rem .7rem; }

/* Typography / surfaces */
.lh-eyebrow { margin:0; color:var(--primary); font-family:"Barlow Condensed",sans-serif; text-transform:uppercase; letter-spacing:.28em; font-size:.72rem; }
.panel-surface,.lh-card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); box-shadow:var(--shadow-panel); }
.lh-button { display:inline-flex; align-items:center; justify-content:center; gap:.5rem; min-height:2.75rem; border:1px solid transparent; border-radius:.375rem; padding:.65rem 1rem; background:var(--primary); color:var(--primary-foreground); text-decoration:none; font-weight:600; cursor:pointer; transition:opacity .15s,background .15s,border-color .15s; }
.lh-button:hover { opacity:.9; }
.lh-button--secondary { background:var(--secondary); color:var(--foreground); border-color:var(--border); }
.lh-button--secondary:hover { background:var(--accent); }
.lh-actions { display:flex; flex-wrap:wrap; gap:.75rem; }
.lh-content { color:var(--muted-foreground); }
.lh-content p:last-child { margin-bottom:0; }

/* Home / About hero = current WebApp */
.lh-hero { position:relative; overflow:hidden; border-bottom:1px solid var(--border); }
.lh-hero__media { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.30; }
.lh-hero__shade { position:absolute; inset:0; background:linear-gradient(90deg,var(--background),color-mix(in oklch,var(--background) 85%,transparent),color-mix(in oklch,var(--background) 40%,transparent)); }
.lh-hero__content { position:relative; display:grid; gap:2rem; padding-block:5rem; }
/* min-width:0 — item siatki grid ma domyślnie min-width:auto (min-content =
   najdłuższe słowo „Hausmeisterservice"), co przy ≤320px rozszerzało ścieżkę
   grid poza kontener i obcinało treść hero. */
.lh-hero__copy { max-width:42rem; min-width:0; }
.lh-hero h1 { margin:.75rem 0 0; font-size:clamp(3rem,8vw,4.5rem); line-height:.95; text-transform:uppercase; overflow-wrap:break-word; }
.lh-hero__lead { margin:1rem 0 0; color:var(--primary); font-family:"Barlow Condensed",sans-serif; font-size:1.25rem; letter-spacing:.04em; text-transform:uppercase; }
.lh-hero__body { margin:1.25rem 0 0; max-width:42rem; color:var(--muted-foreground); font-size:1.125rem; }
.lh-highlights { display:grid; gap:.75rem; grid-template-columns:repeat(3,minmax(0,1fr)); }
.lh-highlight { display:flex; gap:.75rem; padding:1rem; background:var(--surface); border:1px solid var(--border); border-radius:.75rem; }
.lh-mini-icon { flex:0 0 auto; width:2.25rem; height:2.25rem; display:flex; align-items:center; justify-content:center; border-radius:.375rem; background:color-mix(in oklch,var(--primary) 10%,transparent); color:var(--primary); }
.lh-highlight strong { display:block; font-family:"Barlow Condensed",sans-serif; letter-spacing:.04em; text-transform:uppercase; }
.lh-highlight span { display:block; color:var(--muted-foreground); font-size:.875rem; }

/* Sections / services */
.lh-section { padding-block:4rem; }
.lh-section--surface { border-block:1px solid var(--border); background:var(--surface); }
.lh-section-title h2 { margin:.5rem 0 0; font-size:clamp(2.25rem,5vw,3rem); text-transform:uppercase; }
.lh-section-title p { margin-bottom:0; }
.lh-section-intro { max-width:40rem; margin:.75rem 0 0; color:var(--muted-foreground); }
.lh-tabs { margin-top:2rem; }
.lh-tabs__list { display:flex; flex-wrap:wrap; justify-content:flex-start; gap:.25rem; width:100%; padding:.25rem; background:var(--surface); border:1px solid var(--border); border-radius:.5rem; }
.lh-tab { display:inline-flex; align-items:center; gap:.5rem; border:0; border-radius:.375rem; padding:.55rem .75rem; background:transparent; color:var(--muted-foreground); cursor:pointer; font-size:.875rem; }
.lh-tab:hover { color:var(--foreground); background:var(--secondary); }
.lh-tab[aria-selected="true"] { background:var(--primary); color:var(--primary-foreground); }
.lh-tab-panel { margin-top:1rem; padding:1.5rem; background:var(--surface); border:1px solid var(--border); border-radius:.75rem; box-shadow:var(--shadow-panel); }
.lh-tab-panel[hidden] { display:none; }
.lh-tab-panel h3 { margin:0; font-size:1.5rem; text-transform:uppercase; }
.lh-service-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.75rem; margin:1.5rem 0 0; padding:0; list-style:none; }
.lh-service-list li { display:flex; align-items:flex-start; gap:.75rem; padding:.75rem 1rem; border:1px solid var(--border); border-radius:.375rem; background:color-mix(in oklch,var(--surface-strong) 60%,transparent); }
.lh-service-list li::before { content:""; width:.5rem; height:.5rem; flex:0 0 auto; margin-top:.45rem; border-radius:999px; background:var(--primary); }
.lh-tab-panel .lh-button { margin-top:1.5rem; }
.lh-tab-panel__more { display:inline-block; margin-top:1rem; color:var(--primary); font-weight:600; text-decoration:none; }
.lh-tab-panel__more:hover { text-decoration:underline; }
.lh-service-section__more { display:inline-block; margin-top:1rem; color:var(--primary); font-weight:600; text-decoration:none; }
.lh-service-section__more:hover { text-decoration:underline; }

/* Strona „Leistungen” — sekcje kategorii usług */
/* h2 jako blok (nie flex): anonimowy flex-item tekstowy ma min-width:auto i
   nie zmniejsza się poniżej najdłuższego słowa (np. „Renovierungsarbeiten"),
   co przy ≤320px powodowało poziome przepełnienie całej strony.
   overflow-wrap:break-word pozwala łamać słowa szersze niż kontener. */
.lh-service-section h2 { margin:0; font-size:clamp(2.25rem,5vw,3rem); text-transform:uppercase; overflow-wrap:break-word; }
.lh-service-section .lh-mini-icon { font-size:1.5rem; display:inline-flex; margin-right:1rem; vertical-align:middle; }
.lh-service-section__head { margin-bottom:1.5rem; }
.lh-service-section__projects { margin:2.5rem 0 0; font-size:1.5rem; text-transform:uppercase; }
.lh-service-section .lh-gallery { margin-top:1.5rem; }
.lh-service-section .lh-service-list { margin-top:0; }
/* Zdjęcie poglądowe usługi (biblioteka mediów WP; pole `image` w `hm_services`).
   Usługa bez zdjęcia: blok nie jest renderowany — brak pustego miejsca. */
.lh-service-section__image { margin:0 0 1.5rem; border:1px solid var(--border); border-radius:.75rem; overflow:hidden; background:var(--surface); }
.lh-service-section__image img { display:block; width:100%; height:clamp(14rem,30vw,22rem); object-fit:cover; }
.lh-empty-state { max-width:40rem; padding:2rem; background:var(--surface); border:1px dashed var(--border); border-radius:.75rem; color:var(--muted-foreground); }
.lh-empty-state h2 { margin:0 0 .5rem; font-size:1.5rem; text-transform:uppercase; color:var(--foreground); }
.lh-empty-state p { margin:0; }

/* Before / after */
.lh-gallery { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.5rem; margin-top:2rem; }
.lh-project { overflow:hidden; background:var(--surface); border:1px solid var(--border); border-radius:.75rem; box-shadow:var(--shadow-panel); }
.lh-project__images { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.lh-project__image { position:relative; min-width:0; }
.lh-project__image img { display:block; width:100%; height:13rem; object-fit:cover; }
.lh-project__label { position:absolute; top:.5rem; left:.5rem; padding:.125rem .5rem; border-radius:.25rem; background:color-mix(in oklch,var(--background) 80%,transparent); font-family:"Barlow Condensed",sans-serif; font-size:.75rem; letter-spacing:.16em; text-transform:uppercase; }
.lh-project__body { padding:1rem; }
.lh-project__body h3 { margin:0 0 .25rem; font-size:1.125rem; text-transform:uppercase; }
.lh-project__body p { margin:0; color:var(--muted-foreground); }

/* CTA */
.lh-cta { display:flex; align-items:center; justify-content:space-between; gap:1.75rem; padding:clamp(1.5rem,5vw,3rem); border:1px solid var(--border); border-radius:.75rem; background:var(--surface); background-image:repeating-linear-gradient(135deg,color-mix(in oklch,var(--primary) 10%,transparent) 0,color-mix(in oklch,var(--primary) 10%,transparent) 2px,transparent 2px,transparent 10px); }
.lh-cta h2 { margin:0; font-size:clamp(2.25rem,5vw,3.6rem); text-transform:uppercase; }
.lh-cta p { margin:.375rem 0 0; color:var(--muted-foreground); }

/* Generic page / About */
.lh-about-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
.lh-about-card { padding:1.25rem; border:1px solid color-mix(in oklch,var(--border) 80%,transparent); border-radius:.5rem; background:var(--surface); }
.lh-about-card h2 { margin:.75rem 0 0; font-family:"Source Sans 3",sans-serif; font-size:1.125rem; font-weight:600; }
.lh-about-card p { margin:.25rem 0 0; color:var(--muted-foreground); font-size:.875rem; }

/* Generic WordPress pages */
.lh-page-header { padding:3rem 0 2rem; border-bottom:1px solid var(--border); background:var(--surface); }
.lh-page-header h1 { margin:.5rem 0 0; font-size:clamp(3rem,7vw,4.5rem); line-height:.95; text-transform:uppercase; overflow-wrap:break-word; }
.lh-breadcrumb { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; color:var(--muted-foreground); font-size:.8125rem; }
.lh-breadcrumb a { color:var(--muted-foreground); text-decoration:none; }
.lh-breadcrumb a:hover { color:var(--foreground); text-decoration:underline; }
.lh-breadcrumb__sep { color:var(--border); }

/* Contact / status */
.lh-contact-page { width:min(48rem,calc(100% - 2rem)); margin-inline:auto; padding-block:3rem; }
.lh-contact-page--wide { width:min(46rem + 20rem + 1.5rem,calc(100% - 2rem)); }
.lh-contact-page h1 { margin:.5rem 0 0; font-size:clamp(2.25rem,6vw,3rem); text-transform:uppercase; overflow-wrap:break-word; }
.lh-contact-page > .lh-intro { margin:.75rem 0 0; color:var(--muted-foreground); }
.lh-form-card { margin-top:2rem; padding:1.5rem; }
.lh-form-card form { display:flex; flex-direction:column; gap:1.5rem; }
.lh-form-card h2 { margin:0; font-size:1.5rem; text-transform:uppercase; }
.lh-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.lh-field { display:flex; flex-direction:column; gap:.375rem; }
.lh-field label { font-size:.875rem; font-weight:500; line-height:1; }
.lh-field input,.lh-field select,.lh-field textarea { width:100%; height:2.5rem; border:1px solid var(--border); border-radius:.375rem; padding:0 .75rem; background:transparent; color:var(--foreground); outline:none; font-size:.875rem; }
.lh-field input:focus,.lh-field select:focus,.lh-field textarea:focus { border-color:var(--primary); box-shadow:0 0 0 2px color-mix(in oklch,var(--primary) 30%,transparent); }
.lh-field textarea { height:auto; min-height:3.75rem; padding:.5rem .75rem; resize:vertical; }
/* "Temat zgloszenia" (#form_topic) — native dropdown options: readable dark text
   on a light background. The theme is dark, so <option> inherits near-white
   `color` from the select; with no explicit option colors the native popup
   (default light color-scheme) renders white-on-white. Closed select look and
   focus/selected states are intentionally left unchanged. */
#form_topic option { color:#16181d; }
#form_topic option:not(:checked) { background-color:#fff; }
/* "Godzina (przedział)" (#time_slot) — native dropdown options: the same
   fix as #form_topic. The theme is dark, so <option> inherits near-white
   `color` from the select; with no explicit option colors the native popup
   (default light color-scheme) renders white-on-white. Closed select look
   and focus/selected states are intentionally left unchanged. */
#time_slot option { color:#16181d; }
#time_slot option:not(:checked) { background-color:#fff; }
.lh-field small { display:block; margin-top:.35rem; color:var(--muted-foreground); font-size:.75rem; }
.lh-choice-row { display:flex; flex-direction:column; gap:.75rem; }
.lh-choice { display:flex; align-items:center; gap:.75rem; padding:1rem; border:1px solid var(--border); border-radius:.5rem; background:color-mix(in oklch,var(--surface-strong) 40%,transparent); cursor:pointer; transition:border-color .15s,background .15s; }
.lh-choice:has(input:checked) { border-color:var(--primary); background:color-mix(in oklch,var(--primary) 5%,transparent); }
.lh-choice input { width:auto; accent-color:var(--primary); }
.lh-choice__label { font-weight:500; }
.lh-icon { width:1rem; height:1rem; flex:0 0 auto; color:var(--primary); }
.lh-icon--lg { width:1.25rem; height:1.25rem; }
.lh-date-box { padding:1rem; border:1px solid var(--border); border-radius:.5rem; background:color-mix(in oklch,var(--surface-strong) 60%,transparent); }
.lh-date-box__title { display:flex; align-items:center; gap:.5rem; font-family:"Barlow Condensed",sans-serif; font-size:.875rem; letter-spacing:.1em; text-transform:uppercase; }
.lh-date-box__grid { margin-top:.75rem; }
.lh-upload { display:flex; align-items:center; gap:.5rem; cursor:pointer; border:1px dashed var(--border); border-radius:.375rem; background:color-mix(in oklch,var(--surface-strong) 40%,transparent); padding:1.5rem 1rem; font-size:.875rem; color:var(--muted-foreground); transition:border-color .15s,color .15s; }
.lh-upload:hover { border-color:var(--primary); color:var(--foreground); }
.lh-upload .lh-upload__input { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); clip-path:inset(50%); white-space:nowrap; border:0; }
/* Siatka kart załączników — liczba kolumn wg szerokości viewportu (karta
   formularza ma stałą szerokość 46rem przy ≥768px, więc auto-fill dawał
   5 kolumn już na tablecie): 2 na telefonach, 3 @≥768px, 4 @≥1024px, 5 @≥1280px. */
.lh-upload__previews { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.75rem; margin-top:.75rem; }
@media (min-width:768px) { .lh-upload__previews { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (min-width:1024px) { .lh-upload__previews { grid-template-columns:repeat(4,minmax(0,1fr)); } }
@media (min-width:1280px) { .lh-upload__previews { grid-template-columns:repeat(5,minmax(0,1fr)); } }
.lh-upload__preview { display:flex; flex-direction:column; min-width:0; border:1px solid var(--border); border-radius:.5rem; background:color-mix(in oklch,var(--surface-strong) 40%,transparent); overflow:hidden; }
.lh-upload__preview__thumb { flex:0 0 auto; width:100%; aspect-ratio:1/1; display:flex; align-items:center; justify-content:center; background:color-mix(in oklch,var(--accent) 25%,transparent); border-bottom:1px solid var(--border); }
.lh-upload__preview__img { width:100%; height:100%; object-fit:contain; display:block; }
.lh-upload__preview__thumb .lh-icon { width:2rem; height:2rem; color:var(--muted-foreground); }
.lh-upload__preview__meta { display:flex; flex-direction:column; flex:1 1 auto; gap:.25rem; padding:.5rem .625rem .625rem; min-width:0; }
.lh-upload__preview__name { color:var(--foreground); font-size:.8125rem; font-weight:500; line-height:1.35; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; word-break:break-word; }
.lh-upload__preview__footer { display:flex; align-items:center; justify-content:space-between; gap:.375rem; margin-top:auto; }
.lh-upload__preview__size { color:var(--muted-foreground); font-size:.75rem; font-variant-numeric:tabular-nums; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.lh-upload__preview__remove { flex:0 0 auto; width:2.25rem; height:2.25rem; display:inline-flex; align-items:center; justify-content:center; border:1px solid transparent; border-radius:.375rem; background:transparent; color:var(--muted-foreground); cursor:pointer; transition:background .15s,color .15s,border-color .15s; }
.lh-upload__preview__remove svg { width:1rem; height:1rem; }
.lh-upload__preview__remove:hover,.lh-upload__preview__remove:focus-visible { background:color-mix(in oklch,var(--destructive) 20%,transparent); color:var(--foreground); border-color:color-mix(in oklch,var(--destructive) 40%,transparent); }
.lh-upload__preview__remove:focus-visible { outline:2px solid var(--primary); outline-offset:1px; }
.lh-button--submit { width:100%; min-height:2.5rem; height:2.5rem; padding:0 2rem; font-size:.875rem; font-weight:500; }
.lh-button--submit .lh-icon { color:inherit; }
.lh-notice { margin-bottom:1.5rem; padding:.75rem 1rem; border:1px solid; border-radius:.5rem; }
.lh-notice--success { border-color:var(--primary); color:var(--primary); }
.lh-notice--error { border-color:var(--destructive); color:var(--destructive); }
/* Błąd walidacji załącznika (strona kliencka) — inline pod polem „Fotos".
   Komunikaty: theme.js (limity 6 MiB/plik, 25 MiB łącznie). */
.lh-file-error { margin:.5rem 0 0; font-size:.8125rem; font-weight:500; color:var(--destructive); }
.lh-honeypot { position:absolute!important; left:-9999px!important; }
/* Zgoda na przetwarzanie danych (Datenschutzerklärung) — checkbox przed submit.
   Selektory z klasą `.lh-field--consent` mają wyższą specyficzność niż
   ogólna reguła `.lh-field input` (checkbox nie dziedziczy stylu pól). */
.lh-field--consent .lh-consent { display:flex; align-items:flex-start; gap:.625rem; font-size:.875rem; font-weight:400; line-height:1.5; cursor:pointer; }
.lh-field--consent .lh-consent input { width:1.125rem; height:1.125rem; margin-top:.2rem; flex:0 0 auto; border:0; padding:0; background:transparent; accent-color:var(--primary); }
.lh-field--consent .lh-consent a { color:var(--foreground); text-decoration:underline; text-underline-offset:2px; }
.lh-field--consent .lh-consent a:hover { color:var(--primary); }
.lh-contact-list { margin:0; padding:0; list-style:none; }
.lh-contact-list li { padding:.75rem 0; border-bottom:1px solid var(--border); }
.lh-contact-list span { display:block; color:var(--muted-foreground); font-size:.82rem; }

/* Contact layout: form + dynamic company panel (Housemeister) */
.lh-contact-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:1.5rem; margin-top:2rem; }
.lh-contact-layout .lh-form-card { width:100%; max-width:46rem; margin-inline:auto; margin-top:0; }
.lh-company-panel { padding:1.5rem; width:100%; max-width:46rem; margin-inline:auto; }
.lh-company-panel h2 { margin:0 0 1rem; font-size:1.5rem; text-transform:uppercase; }
.lh-company-panel p { margin:0 0 .5rem; }
.lh-company-panel a { color:var(--foreground); text-decoration:none; }
.lh-company-panel a:hover { color:var(--primary); }
.lh-company-panel__district { font-weight:600; text-transform:uppercase; }
.lh-company-panel__name { font-weight:600; }
.lh-company-panel__block { margin-top:1rem; padding-top:1rem; border-top:1px solid var(--border); }
.lh-company-panel__appointment { margin-top:1rem; padding-top:1rem; border-top:1px solid var(--border); color:var(--muted-foreground); }
.lh-company-panel__fallback { color:var(--muted-foreground); }

@media (min-width:1152px) { .lh-contact-layout { grid-template-columns:minmax(0,46rem) minmax(15rem,20rem); justify-content:center; align-items:start; } .lh-contact-layout .lh-form-card { max-width:46rem; margin-inline:0; } .lh-company-panel { max-width:20rem; margin-inline:0; } }

.site-footer { border-top:1px solid color-mix(in oklch,var(--border) 80%,transparent); background:var(--surface); }
.site-footer__inner { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding-block:2rem; color:var(--muted-foreground); font-size:.875rem; }
.site-footer nav ul { display:flex; gap:1rem; margin:0; padding:0; list-style:none; }
.site-footer a { text-decoration:none; }
.site-footer a:hover { color:var(--foreground); }

@media (min-width:640px) { .lh-hero__content { padding-block:7rem; } .lh-choice-row { flex-direction:row; } .lh-choice { flex:1; } }
@media (max-width:780px) {
  body.admin-bar .site-header { top:46px; }
  .menu-toggle { display:inline-flex; }
  .site-nav { display:none; position:absolute; inset:100% 0 auto; padding:12px 16px 18px; border-bottom:1px solid var(--border); background:var(--background); }
  .site-nav.is-open { display:block; }
  .site-nav ul { align-items:stretch; flex-direction:column; }
  .site-nav a { padding:.75rem; }
  .lh-highlights,.lh-gallery,.lh-about-grid { grid-template-columns:1fr; }
  .lh-service-list,.lh-form-grid { grid-template-columns:1fr; }
  .lh-service-section__image img { height:clamp(10rem,55vw,14rem); }
  .lh-field--full { grid-column:auto; }
  .lh-cta,.site-footer__inner { align-items:flex-start; flex-direction:column; }
  .lh-contact-page { padding-block:2.5rem; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition:none!important; animation:none!important; } }

/* Walidacja client-side — komunikaty błędów pod polem (public-api.js). */
.lh-field--invalid input,.lh-field--invalid select,.lh-field--invalid textarea { border-color:var(--destructive); }
.lh-field__error { display:block; margin-top:.375rem; font-size:.8125rem; line-height:1.4; color:var(--destructive); }

/* Popup potwierdzający przyjęcie zgłoszenia (page-contact.php + theme.js).
   Otwierany wyłącznie po request=success | success_email. */
.lh-popup { position:fixed; inset:0; z-index:1000; display:flex; align-items:center; justify-content:center; padding:1rem; }
.lh-popup[hidden] { display:none; }
.lh-popup__backdrop { position:absolute; inset:0; background:oklch(0 0 0 / .6); }
/* max-height:100% = wysokość .lh-popup minus jej padding 1rem (flex centering);
   przy niskim viewportzie (telefon poziomo) karta nie wychodzi poza ekran,
   a nadmiar treści przewija się wewnątrz karty. */
.lh-popup__card { position:relative; width:100%; max-width:26rem; max-height:100%; overflow-y:auto; padding:2.25rem 1.75rem 1.75rem; text-align:center; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-xl); box-shadow:var(--shadow-panel); }
.lh-popup__close { position:absolute; top:.5rem; right:.5rem; width:2.5rem; height:2.5rem; display:inline-flex; align-items:center; justify-content:center; border:0; border-radius:.5rem; background:transparent; color:var(--muted-foreground); font-size:1.5rem; line-height:1; cursor:pointer; transition:background .15s,color .15s; }
.lh-popup__close:hover,.lh-popup__close:focus-visible { background:color-mix(in oklch,var(--accent) 60%,transparent); color:var(--foreground); }
.lh-popup__icon { display:inline-flex; align-items:center; justify-content:center; width:4rem; height:4rem; margin-bottom:1rem; border-radius:50%; background:color-mix(in oklch,var(--primary) 18%,transparent); color:var(--primary); }
.lh-popup__title { margin:0 0 .5rem; font-size:1.5rem; }
.lh-popup__body { margin:0 0 1.5rem; color:var(--muted-foreground); font-size:.9375rem; }
.lh-popup__action { width:100%; min-height:2.5rem; }
body.lh-popup-open { overflow:hidden; }
