/* =========================================================================
   Kwin Solar Core — styles for plugin widgets and shortcodes.
   Falls back to sane values if the Kwin Solar theme is not active.
   ========================================================================= */

.kw-note{
  padding:14px 16px; border:1px dashed var(--kw-line,#EFE4DA); border-radius:10px;
  color:var(--kw-muted,#94867F); font-size:.9rem; background:var(--kw-card,#fff);
}
.kw-callprice{ font-size:.92rem; font-weight:700; color:var(--kw-maroon,#3C1213); }

/* Column helpers used by widget controls. */
.kw-cols-2{ grid-template-columns:repeat(2,1fr)!important; }
.kw-cols-3{ grid-template-columns:repeat(3,1fr)!important; }
.kw-cols-4{ grid-template-columns:repeat(4,1fr)!important; }
@media (max-width:1100px){ .kw-cols-4{ grid-template-columns:repeat(3,1fr)!important; } }
@media (max-width:720px){ .kw-cols-3,.kw-cols-4{ grid-template-columns:repeat(2,1fr)!important; } }
@media (max-width:520px){ .kw-cols-2,.kw-cols-3,.kw-cols-4{ grid-template-columns:1fr!important; } }

/* Generic tile grid — services and projects. */
.kw-tile{
  background:var(--kw-card,#fff); border-radius:var(--kw-r,16px); overflow:hidden;
  box-shadow:var(--kw-shadow,0 8px 24px rgba(42,30,26,.05)); display:flex; flex-direction:column;
}
.kw-tile__media{ aspect-ratio:4/3; background:var(--kw-tint,#F7EFE6); overflow:hidden; display:block; }
.kw-tile__media img{ width:100%; height:100%; object-fit:cover; }
.kw-tile__body{ padding:20px; }
.kw-tile h3{ font-size:1.05rem; margin:0 0 6px; }
.kw-tile p{ font-size:.89rem; color:var(--kw-muted,#94867F); margin:0; }
.kw-tile__meta{ font-size:.78rem; font-weight:700; color:var(--kw-maroon,#3C1213)!important; margin-bottom:6px!important; }

/* Testimonials. */
.kw-quote{
  background:var(--kw-card,#fff); border:1px solid var(--kw-line,#EFE4DA);
  border-radius:var(--kw-r,16px); padding:26px; margin:0;
}
.kw-quote__mark{ color:var(--kw-yellow-600,#EBCB00); display:block; margin-bottom:8px; }
.kw-quote__stars{ display:flex; gap:2px; color:var(--kw-yellow-600,#EBCB00); margin-bottom:10px; }
.kw-quote__stars svg{ fill:currentColor; }
.kw-quote p{ font-size:.94rem; }
.kw-quote cite{ display:block; margin-top:14px; font-style:normal; font-weight:700; font-size:.9rem; color:var(--kw-ink,#2A1E1A); }
.kw-quote cite span{ display:block; font-weight:500; font-size:.81rem; color:var(--kw-muted,#94867F); }

/* Contact cards. */
.kw-contact-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.kw-contact-card{ background:var(--kw-card,#fff); border:1px solid var(--kw-line,#EFE4DA); border-radius:var(--kw-r,16px); padding:22px; }
.kw-contact-card__icon{
  display:grid; place-items:center; width:44px; height:44px; border-radius:12px;
  background:var(--kw-yellow-tint,#FFF8D6); color:var(--kw-maroon,#3C1213); margin-bottom:12px;
}
.kw-contact-card h3{ font-size:.95rem; margin:0 0 5px; }
.kw-contact-card p{ font-size:.88rem; color:var(--kw-muted,#94867F); margin:0; }
.kw-map{ border-radius:var(--kw-r,16px); overflow:hidden; line-height:0; }
.kw-map iframe{ width:100%; min-height:380px; border:0; }

/* FAQs. */
.kw-faqs{ display:grid; gap:10px; }
.kw-faq{ border:1px solid var(--kw-line,#EFE4DA); border-radius:var(--kw-r-sm,10px); background:var(--kw-card,#fff); overflow:hidden; }
.kw-faq summary{
  cursor:pointer; padding:17px 20px; font-weight:700; font-size:.96rem; list-style:none;
  display:flex; justify-content:space-between; gap:14px; color:var(--kw-ink,#2A1E1A);
}
.kw-faq summary::-webkit-details-marker{ display:none; }
.kw-faq summary::after{ content:"+"; font-weight:400; font-size:1.35rem; line-height:1; }
.kw-faq[open] summary::after{ content:"–"; }
.kw-faq__body{ padding:2px 20px 18px; font-size:.92rem; }

@media (max-width:1100px){ .kw-contact-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .kw-contact-grid{ grid-template-columns:1fr; } }

/* CTA banner variants */
.kw-promo--yellow{ background:var(--kw-yellow,#FFDD00); }
.kw-promo--yellow h2{ color:var(--kw-maroon,#3C1213); }
.kw-promo--yellow p{ color:#5A2426; }
