/**
 * Katalog firm.
 *
 * Kolory i kroje ze zmiennych motywu, z wartościami zapasowymi na wypadek
 * użycia wtyczki w innym projekcie.
 */

.firm-catalog,
.firm-profile{
  --f-surface: var(--surface, #fff);
  --f-paper:   var(--paper, #F0F2EF);
  --f-ink:     var(--ink, #14181A);
  --f-ink-2:   var(--ink-2, #3D474A);
  --f-ink-3:   var(--ink-3, #6C7A7D);
  --f-rule:    var(--rule, #D8DCD6);
  --f-green:   var(--green, #0F7D4A);
  --f-star:    var(--pv, #E9A526);
  --f-mono:    var(--mono, ui-monospace, monospace);
}

/* ── filtry ── */
.firm-filters{
  display:grid;grid-template-columns:1.4fr repeat(3,1fr) auto;gap:14px;align-items:end;
  padding:18px;margin-bottom:20px;
  background:var(--f-surface);border:1px solid var(--f-rule);border-radius:2px;
}
.firm-f{display:flex;flex-direction:column;min-width:0}
.firm-f label{font-size:12.5px;font-weight:600;color:var(--f-ink-2);margin-bottom:6px}
.firm-f input,
.firm-f select{
  width:100%;padding:9px 11px;font:inherit;font-size:14.5px;
  background:var(--f-paper);border:1px solid var(--f-rule);border-radius:2px;color:var(--f-ink);
}
.firm-f input:focus,
.firm-f select:focus{outline:none;border-color:var(--f-green)}
.firm-submit{
  padding:10px 22px;border:0;border-radius:2px;cursor:pointer;
  background:var(--f-green);color:#fff;font:inherit;font-size:14.5px;font-weight:700;
}
.firm-submit:hover{filter:brightness(1.1)}

.firm-count{font-family:var(--f-mono);font-size:11.5px;color:var(--f-ink-3);margin:0 0 14px}
.firm-empty{padding:32px;text-align:center;color:var(--f-ink-3);background:var(--f-paper);border-radius:2px}

/* ── siatka firm ── */
.firm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.firm-card{
  display:flex;flex-direction:column;min-width:0;
  padding:18px;background:var(--f-surface);border:1px solid var(--f-rule);border-radius:2px;
  transition:border-color .15s,box-shadow .15s,transform .15s;
}
.firm-card:hover{
  border-color:var(--rule-2,#C3C9C1);box-shadow:0 6px 20px rgba(20,24,26,.08);transform:translateY(-2px);
}
.firm-card h3{font-size:17px;font-weight:700;letter-spacing:-.02em;line-height:1.25;margin:0 0 6px}
.firm-card h3 a{color:var(--f-ink);text-decoration:none}
.firm-card h3 a:hover{color:var(--f-green)}
.firm-place{font-family:var(--f-mono);font-size:10.5px;color:var(--f-ink-3);margin:0 0 10px}

.firm-rate{display:flex;align-items:center;gap:7px;margin:0 0 10px;font-size:12.5px}
.firm-rate b{font-family:var(--f-mono);font-weight:600;color:var(--f-ink)}
.firm-rate span{color:var(--f-ink-3);font-size:11.5px}
.firm-rate-none{font-family:var(--f-mono);font-size:10.5px;color:var(--f-ink-3)}

.firm-stars{display:inline-flex;gap:1px;line-height:1}
.firm-stars i{font-style:normal;color:var(--f-rule);font-size:13px}
.firm-stars i.on{color:var(--f-star)}

.firm-desc{font-size:13.5px;line-height:1.5;color:var(--f-ink-2);margin:0 0 14px}
.firm-more{margin-top:auto;font-size:13px;font-weight:600;color:var(--f-green);text-decoration:none}
.firm-more:hover{text-decoration:underline;text-underline-offset:3px}

/* ── stronicowanie ── */
.firm-pages{display:flex;flex-wrap:wrap;gap:6px;margin-top:22px}
.firm-pages a{
  min-width:36px;padding:8px 10px;text-align:center;text-decoration:none;
  font-family:var(--f-mono);font-size:12.5px;color:var(--f-ink-2);
  background:var(--f-surface);border:1px solid var(--f-rule);border-radius:2px;
}
.firm-pages a:hover{border-color:var(--f-green);color:var(--f-green)}
.firm-pages a.is-current{background:var(--f-green);border-color:var(--f-green);color:#fff}

/* ── profil firmy ── */
.firm-profile{margin-top:28px}
.firm-headline{
  padding:18px 20px;margin-bottom:22px;
  background:var(--f-paper);border:1px solid var(--f-rule);border-radius:2px;
}
.firm-score{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.firm-score .v{font-family:var(--f-mono);font-size:34px;font-weight:600;color:var(--f-ink);letter-spacing:-.04em;line-height:1}
.firm-score .firm-stars i{font-size:17px}
.firm-score .c{font-size:12.5px;color:var(--f-ink-3)}
.firm-score-none .c{font-size:14px;color:var(--f-ink-2)}

.firm-block{margin-bottom:22px}
.firm-block h3{
  font-family:var(--f-mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--f-ink-3);font-weight:500;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--f-rule);
}
.firm-dl{display:grid;grid-template-columns:150px 1fr;gap:8px 18px;margin:0}
.firm-dl dt{font-size:13px;color:var(--f-ink-3)}
.firm-dl dd{margin:0;font-size:14.5px;color:var(--f-ink)}
.firm-dl a{color:var(--f-green)}
.firm-area{font-size:14.5px;color:var(--f-ink-2);margin:0}

.firm-source{font-family:var(--f-mono);font-size:10.5px;line-height:1.6;color:var(--f-ink-3);margin-top:20px}

/* ── formularz opinii ── */
.firm-rating-field{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.firm-rating-field label{font-weight:600}

/* Gwiazdki w odwrotnej kolejności w kodzie, żeby podświetlenie
   sąsiadów obejmowało oceny niższe od wskazanej. */
.firm-stars-input{display:inline-flex;flex-direction:row-reverse;gap:2px}
.firm-stars-input input{position:absolute;opacity:0;width:0;height:0}
.firm-stars-input label{
  font-size:26px;line-height:1;color:var(--f-rule);cursor:pointer;transition:color .12s;
}
.firm-stars-input input:checked ~ label,
.firm-stars-input label:hover,
.firm-stars-input label:hover ~ label{color:var(--f-star)}
.firm-stars-input input:focus-visible + label{outline:2px solid var(--f-green);outline-offset:2px}

.firm-rating-note{font-size:12.5px;line-height:1.55;color:var(--f-ink-3);margin:0 0 14px}

@media (max-width:1000px){
  .firm-filters{grid-template-columns:1fr 1fr;}
  .firm-submit{grid-column:1/-1}
  .firm-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:620px){
  .firm-grid{grid-template-columns:1fr}
  .firm-filters{grid-template-columns:1fr}
  .firm-dl{grid-template-columns:1fr;gap:2px}
  .firm-dl dt{font-family:var(--f-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em}
  .firm-dl dd{margin-bottom:10px}
}

/* ══════════════════════════════════════════════════════════════
   UKŁAD Z KOLUMNĄ BOCZNĄ
   Katalog nie polega na kolumnie bocznej motywu — buduje własną.
   Dzięki temu działa tak samo na stronie z shortcode'em, w archiwum
   i w dowolnym innym motywie.
   ══════════════════════════════════════════════════════════════ */
.firm-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:28px;align-items:start}
.firm-catalog:not(.has-side) .firm-layout{grid-template-columns:1fr}
.firm-main{min-width:0}

.firm-catalog.has-side .firm-grid{grid-template-columns:1fr 1fr}

.firm-side{position:sticky;top:104px;display:flex;flex-direction:column;gap:16px}
.firm-side-box{
  padding:16px;background:var(--f-surface);
  border:1px solid var(--f-rule);border-radius:2px;
}
.firm-side-box h3{
  font-family:var(--f-mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--f-ink-3);font-weight:500;margin:0 0 12px;
}
.firm-side-box p{font-size:13px;line-height:1.5;color:var(--f-ink-2);margin:0 0 12px}

/* ── przyciski zgłoszeń ── */
.firm-btn{
  display:inline-flex;align-items:center;justify-content:center;width:100%;
  padding:10px 16px;border:1.5px solid var(--f-green);border-radius:2px;
  background:var(--f-surface);color:var(--f-green);
  font-size:13.5px;font-weight:700;text-decoration:none;
  transition:background .15s,color .15s;
}
.firm-btn:hover{background:var(--f-green);color:#fff}
.firm-btn-solid{background:var(--f-green);color:#fff}
.firm-btn-solid:hover{filter:brightness(1.1);color:#fff}

.firm-side-cta{background:var(--f-paper)}
.firm-side-cta h3{color:var(--f-green)}

/* ── listy klasyfikacji ── */
.firm-tax{list-style:none;margin:0;padding:0}
.firm-tax li a{
  display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  padding:7px 0;border-bottom:1px solid var(--f-rule);
  font-size:13.5px;color:var(--f-ink-2);text-decoration:none;
}
.firm-tax li:last-child a{border-bottom:none}
.firm-tax li a:hover{color:var(--f-green)}
.firm-tax li a b{font-family:var(--f-mono);font-size:10.5px;font-weight:500;color:var(--f-ink-3)}
.firm-tax li.is-on a{color:var(--f-green);font-weight:700}
.firm-tax li.is-on a::after{content:"×";margin-left:6px;font-weight:400}

.firm-tax-tags{display:flex;flex-wrap:wrap;gap:6px}
.firm-tax-tags li a{
  padding:5px 9px;border:1px solid var(--f-rule);border-radius:2px;
  font-size:12.5px;
}
.firm-tax-tags li a b{margin-left:5px}

.firm-side-clear{margin:0;text-align:center}
.firm-side-clear a{font-family:var(--f-mono);font-size:11px;color:var(--f-ink-3)}
.firm-side-clear a:hover{color:var(--f-green)}

/* ── przejęcie wpisu na profilu ── */
.firm-claim{
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  padding:16px 18px;margin-top:24px;
  background:var(--f-paper);border:1px solid var(--f-rule);border-radius:2px;
}
.firm-claim > div{flex:1 1 300px;min-width:0}
.firm-claim strong{display:block;font-size:14.5px;color:var(--f-ink);margin-bottom:3px}
.firm-claim span{font-size:13px;line-height:1.5;color:var(--f-ink-2)}
.firm-claim .firm-btn{width:auto;flex:0 0 auto}

@media (max-width:1000px){
  .firm-layout{grid-template-columns:1fr;gap:24px}
  .firm-side{position:static}
  .firm-catalog.has-side .firm-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:620px){
  .firm-catalog.has-side .firm-grid{grid-template-columns:1fr}
  .firm-claim{flex-direction:column;align-items:stretch}
  .firm-claim .firm-btn{width:100%}
}
