/* polish.css (Task 4): modern finish for the existing Elementor pages, inside the design system.
   Tokens: primary #0b0b0c, accent #d5a944, dark #050505, text #3a3a3a. New classes use the .pl- prefix.
   Page-specific rules are scoped with the WordPress body class (.page-id-N / .error404). */
:root { --pl-primary: #0b0b0c; --pl-accent: #d5a944; --pl-dark: #050505; --pl-text: #3a3a3a; --pl-tint: #f6f2e7; --pl-line: #E2E7F3; --pl-radius: 14px; --pl-shadow: 0 12px 32px -14px rgba(5,5,5, .45); }

/* ---- Browser surfaces: selection, focus, motion, wrapping ---- */
::selection { background: var(--pl-primary); color: #fff; }
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: 3px solid var(--pl-accent); outline-offset: 2px; border-radius: 4px; }
:where(h1, h2, h3, .elementor-heading-title, .elementor-icon-box-title, .elementor-cta__title) { text-wrap: balance; }
:where(p, .elementor-icon-box-description) { text-wrap: pretty; }

/* ---- Buttons: one radius, one hover/press feel ---- */
.elementor-button { transition: transform .18s cubic-bezier(.2, .7, .2, 1), box-shadow .18s ease, filter .18s ease, background-color .18s ease; }
.elementor-button:hover { transform: translateY(-1px); box-shadow: 0 8px 18px -10px rgba(5,5,5, .55); filter: brightness(1.06); }
.elementor-button:active { transform: translateY(0); box-shadow: none; }
.pl-more { margin: 8px 0 0; text-align: center; }
.elementor-widget-posts:has(.pl-more) { width: 100% !important; max-width: 100% !important; }
.pl-btn { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 22px; border-radius: 0; background: var(--pl-primary); color: #fff !important; font: 600 14px/1.2 Outfit, Inter, ui-sans-serif, system-ui, sans-serif; letter-spacing: .04em; text-transform: uppercase; text-decoration: none; transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease; }
.pl-btn::after { content: "\2192"; transition: transform .18s ease; }
.pl-btn:hover { background: var(--pl-dark); transform: translateY(-1px); box-shadow: 0 8px 18px -10px rgba(5,5,5, .6); }
.pl-btn:hover::after { transform: translateX(3px); }

/* ---- Header: phone sits above the estimate button on phones, not under the logo ---- */
@media (max-width: 767px) {
  .elementor-mobile-align-end .elementor-icon-list-items { justify-content: flex-end; }
  #masthead .elementor-mobile-align-end { position: relative; z-index: 2; }
}

/* ---- Featured Projects cards (every page that has them: they are the CTA widgets with a ribbon) ---- */
.elementor-cta--skin-cover:has(.elementor-ribbon) .elementor-cta { border-radius: var(--pl-radius); overflow: hidden; box-shadow: var(--pl-shadow); isolation: isolate; transition: transform .35s cubic-bezier(.2, .7, .2, 1), box-shadow .35s ease; }
.elementor-cta--skin-cover:has(.elementor-ribbon) .elementor-cta:hover { transform: translateY(-4px); box-shadow: 0 22px 40px -18px rgba(5,5,5, .6); }
.elementor-cta--skin-cover:has(.elementor-ribbon) .elementor-cta .elementor-cta__bg-overlay { background: linear-gradient(to top, rgba(5,5,5, .9) 0%, rgba(5,5,5, .45) 45%, rgba(5,5,5, .08) 100%) !important; opacity: 1 !important; }
.elementor-cta--skin-cover:has(.elementor-ribbon) .elementor-cta__content { align-content: flex-end !important; justify-content: flex-start !important; text-align: left !important; padding: 18px 18px 20px !important; }
.elementor-cta--skin-cover:has(.elementor-ribbon) .elementor-cta__content-item { width: 100%; }
.elementor-cta--skin-cover:has(.elementor-ribbon) .elementor-cta__title { margin: 0 0 10px !important; font-size: clamp(1.05rem, .8rem + .9vw, 1.45rem) !important; line-height: 1.15 !important; letter-spacing: -.01em; color: #fff !important; overflow-wrap: anywhere; }
.elementor-cta--skin-cover:has(.elementor-ribbon) .elementor-cta__button { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 6px 14px !important; border: 1px solid rgba(255,255,255, .75) !important; border-radius: 999px !important; background: transparent !important; color: #fff !important; font-size: 11px !important; letter-spacing: .12em !important; transition: background-color .2s ease, border-color .2s ease; }
.elementor-cta--skin-cover:has(.elementor-ribbon) .elementor-cta__button::after { content: "\2192"; font-size: 13px; letter-spacing: 0; }
.elementor-cta--skin-cover:has(.elementor-ribbon) .elementor-cta:hover .elementor-cta__button { background: var(--pl-accent) !important; border-color: var(--pl-accent) !important; }
.elementor-cta--skin-cover .elementor-ribbon { top: 14px !important; left: 14px !important; right: auto !important; width: auto !important; height: auto !important; transform: none !important; overflow: visible !important; z-index: 2; }
.elementor-cta--skin-cover .elementor-ribbon-inner { position: static !important; display: inline-block; width: auto !important; margin: 0 !important; padding: 5px 11px !important; transform: none !important; border-radius: 999px; background: var(--pl-accent) !important; color: #fff; font: 700 10.5px/1.2 Inter, ui-sans-serif, system-ui, sans-serif !important; letter-spacing: .1em !important; text-transform: uppercase; box-shadow: 0 4px 10px -4px rgba(5,5,5, .5); }
.elementor-cta--skin-cover:has(.elementor-ribbon) .elementor-cta:focus-visible { outline-offset: 3px; }

/* ---- "Simple 3 Steps" cards: long titles fit on tablets ---- */
@media (min-width: 768px) and (max-width: 1024px) { .elementor-cta--skin-classic .elementor-cta__title { font-size: clamp(16px, 2.3vw, 21px) !important; overflow-wrap: break-word; } }

/* ---- Photo galleries: soft corners on the justified rows ---- */
.gallery-justified-rows .e-gallery-item { border-radius: 8px; overflow: hidden; }
.gallery-justified-rows .e-gallery-item img, .gallery-justified-rows .e-gallery-image { transition: transform .5s cubic-bezier(.2, .7, .2, 1); }
.gallery-justified-rows .e-gallery-item:hover img { transform: scale(1.03); }

/* ---- Footer: comfortable tap targets ---- */
.footer-width-fixer .elementor-social-icon, footer .elementor-social-icon { min-width: 40px; min-height: 40px; display: inline-flex; align-items: center; justify-content: center; }
.footer-width-fixer .elementor-icon-list-item > a, footer .elementor-icon-list-item > a { min-height: 40px; display: inline-flex; align-items: center; }

/* ---- Home (page-id-2325) ---- */
.page-id-2325 .elementor-element.elementor-element-625fe342 { margin-top: 0; }
@media (min-width: 768px) and (max-width: 1024px) {
  .page-id-2325 .elementor-element.elementor-element-d166770 { display: none; } /* phone strip copy of the service tiles */
  .page-id-2325 .elementor-element-760a26c0 > .elementor-container, .page-id-2469 .elementor-element-3a71c68 > .elementor-container { padding: 0 20px; }
}
@media (max-width: 1024px) { .page-id-2325 .elementor-element.elementor-element-5ee9c25a { padding-top: 48px; } }

/* ---- Schedule an In-Home Consultation block (home, free estimate) ---- */
.page-id-2325 .elementor-element-31e5d71, .page-id-2489 .elementor-element-7dcf2dad { padding-left: 20px; padding-right: 20px; text-align: center; }
.page-id-2325 .elementor-element-31e5d71 .elementor-heading-title { text-align: center; }

/* ---- FAQs (page-id-2473): Q&A cards, two columns on desktop ---- */
.page-id-2473 .ekit-wid-con { display: grid; gap: 14px; }
@media (min-width: 1025px) { .page-id-2473 .ekit-wid-con { grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; } }
.page-id-2473 .elementskit-single-faq { margin: 0 !important; border: 1px solid var(--pl-line); border-radius: var(--pl-radius); background: #fff; overflow: hidden; box-shadow: 0 6px 18px -14px rgba(5,5,5, .35); }
.page-id-2473 .elementskit-faq-header { margin: 0 !important; padding: 16px 20px !important; background: var(--pl-tint) !important; border: 0 !important; }
.page-id-2473 .elementskit-faq-title { margin: 0 !important; font: 600 17px/1.35 Outfit, Inter, ui-sans-serif, system-ui, sans-serif !important; color: var(--pl-dark) !important; }
.page-id-2473 .elementskit-faq-body { padding: 14px 20px 18px !important; color: var(--pl-text); font-size: 15px; line-height: 1.65; }
.page-id-2473 .elementor-element-057308c { padding-top: 32px; padding-bottom: 56px; }

/* ---- 404 (error404): dark band behind the header, clear exits ---- */
.error404 .elementor-element-4f2d4051 { background: var(--pl-dark) !important; padding: 230px 20px 96px !important; margin-top: -176px; color: #fff; }
.error404 .elementor-element-4f2d4051 .elementor-icon-box-title, .error404 .elementor-element-4f2d4051 .elementor-icon-list-text { color: #fff !important; }
.error404 .elementor-element-4f2d4051 .elementor-icon-box-title { font-size: clamp(3.5rem, 2rem + 6vw, 6rem) !important; line-height: 1; }
.error404 .elementor-element-4f2d4051 .elementor-icon-box-description { color: rgba(255,255,255, .82) !important; }
.error404 .elementor-element-4f2d4051 .elementor-icon-list-icon svg { fill: var(--pl-accent) !important; width: 10px; }
.pl-404-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 20px; }
.pl-404-links a { display: inline-flex; align-items: center; min-height: 44px; padding: 8px 18px; border: 1px solid rgba(255,255,255, .35); border-radius: 999px; color: #fff; text-decoration: none; font-weight: 600; font-size: 14px; transition: background-color .2s ease, border-color .2s ease; }
.pl-404-links a:hover { background: var(--pl-accent); border-color: var(--pl-accent); color: #fff; }

/* ---- Thank you (page-id-3848): readable headline on the photo ---- */
.page-id-3848 .elementor-element-533942d0 > .elementor-background-overlay { background-color: var(--pl-dark) !important; opacity: .72 !important; }
.page-id-3848 .elementor-element-c5847d4 .elementor-heading-title { color: #fff !important; text-align: center; padding: 0 20px; }

/* ---- Appointment (page-id-5679): review count readable on grey ---- */
.page-id-5679 .grv-sub { color: #E8ECF5 !important; }

/* ---- Motion: honour the user's setting ---- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  .elementor-button:hover, .pl-btn:hover, .elementor-cta:hover { transform: none !important; }
}

/* Home page: latest posts (3 newest articles) */
.home-posts{display:grid;grid-template-columns:1fr;gap:16px;width:100%;max-width:1140px;margin:0 auto;padding:0 20px}
.home-post{display:flex;gap:14px;align-items:center;background:#fff;border:1px solid #e1e6ee;border-radius:12px;overflow:hidden;text-decoration:none;color:#050505;box-shadow:0 6px 18px rgba(5,5,5,.06)}
.home-post img{width:112px;height:112px;object-fit:cover;flex:none}
.home-post__body{display:flex;flex-direction:column;gap:4px;padding:10px 14px 10px 0}
.home-post__cat{font:700 12px/1 Outfit,Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#8f6b16}
.home-post__title{font:600 17px/1.3 Outfit,Inter,sans-serif}
.home-post__more{font:600 14px/1 Inter,sans-serif;color:#0b0b0c}
@media(min-width:768px){.home-posts{grid-template-columns:repeat(3,1fr);gap:24px;padding:0}.home-post{flex-direction:column;align-items:stretch;gap:0}.home-post img{width:100%;height:190px}.home-post__body{padding:16px 18px 20px}}

/* Home page, phone: remove oversized empty bands (measured with tools/qa/mobile_gaps.py) */
@media(max-width:767px){
 body.home .elementor-element.elementor-element-625fe342{padding-top:56px!important;padding-bottom:20px!important}
 body.home .elementor-element.elementor-element-29a11ea{padding-top:56px!important;padding-bottom:12px!important}
 body.home .elementor-element.elementor-element-2d87e31c{padding-top:32px!important;padding-bottom:24px!important}
 .grv-track{transition:height .25s ease}
}
