/* Neutralise core block styling so the design system rules win */
.wp-block-heading{margin:0}
figure.wp-block-image:not(.x){margin:0}
.wp-block-image img{height:auto}
.wp-block-image.photo{position:relative;overflow:hidden;border-radius:18px;background:#e2e5ea}
.wp-block-image.photo img{width:100%;height:100%;object-fit:cover;display:block;border-radius:18px}
.wp-block-image.photo figcaption{display:none}
.wp-block-buttons{display:flex;gap:12px;flex-wrap:wrap;margin:0}
.wp-block-buttons .wp-block-button{margin:0}
.wp-block-button .wp-block-button__link{font-family:var(--body);text-decoration:none;box-shadow:none;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:700;padding:16px 26px;border-radius:12px;font-size:16px;line-height:1.2;border:0;transition:transform .15s,box-shadow .15s}
.wp-block-button .wp-block-button__link:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,0,0,.12)}
.wp-block-button.mfb-red .wp-block-button__link{background:var(--red);color:#fff}
.wp-block-button.mfb-blue .wp-block-button__link{background:var(--blue);color:#fff}
.wp-block-button.mfb-yellow .wp-block-button__link{background:var(--yellow);color:var(--ink)}
.wp-block-button.mfb-white .wp-block-button__link{background:#fff;color:var(--ink);border:2px solid var(--line)}
.wp-block-button.mfb-wa .wp-block-button__link{background:#25D366;color:#fff}
.wp-block-button.mfb-ghostDark .wp-block-button__link{background:transparent;color:#fff;box-shadow:inset 0 0 0 2px #fff}
.stack.wp-block-buttons{flex-direction:column}
.stack.wp-block-buttons .wp-block-button,.stack.wp-block-buttons .wp-block-button__link{width:100%}
.nav .wp-block-button{margin:0}
.wp-block-details{border:0;padding:0}
.wp-block-details summary{list-style:none}
.wp-block-details summary::-webkit-details-marker{display:none}
.wp-block-list{margin:0;padding:0}
ul.wp-block-list li{margin:0}

/* WP wraps group inner content in .wp-block-group__inner-container, which breaks every CSS grid.
   display:contents makes that wrapper transparent so grid children lay out correctly. AMW Media, 2 Sep 2026. */
.wp-block-group > .wp-block-group__inner-container{display:contents}
/* spacing fix: :where() gives this ZERO specificity, so it cancels WordPress's
   default 24px block margin but never overrides the design system's own margins. */
:where(.wp-block-group__inner-container) > :where(* + *){margin-block-start:0}
/* WordPress inserts this wrapper between a group and its children. Any design rule
   written as ".parent div" would otherwise style the wrapper instead of the real
   children (it broke the reviews score card). !important keeps it out of layout. */
.wp-block-group > .wp-block-group__inner-container{display:contents!important}
/* stop section padding stacking with a first child's own top margin */
.section .wp-block-group__inner-container > :first-child{margin-block-start:0}

/* ---- CLS hardening: reserve space before images/fonts load ---- */
.foot-h{color:#fff;font-family:var(--display);font-size:13px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:12px;font-weight:900}
img{max-width:100%}
.wp-block-image img{height:auto}
.hero-card .logoTop{aspect-ratio:1047/842;height:auto}
.nav .logo img{aspect-ratio:1047/842}
footer.site .flogo{aspect-ratio:1047/842}
.pawel-card img,.pawel-about img,.abportrait img{aspect-ratio:816/900;height:auto}
.lz-hero img,.laserband img{height:auto}

/* ---- a11y overrides: must beat page-styles.css and the block rules above ---- */
.landlords,.llhero{background:#1160AE!important}
.landlords p,.llhero .lead{color:#EDF3FD!important}
/* onDark pill darkened so white text passes AA over the translucent fill */
.tag.onDark{background:rgba(0,0,0,.28)!important}
.tag.goldOnDark{background:rgba(0,0,0,.35)!important}
.btn-wa,.bar .btn-wa,.wp-block-button.mfb-wa .wp-block-button__link{color:var(--ink)!important}
.legal{color:#9c9c9a!important}
.legal a{color:#c9c9c7!important}
.tag{color:var(--ink)!important}
.tag.onDark,.tag.goldOnDark{color:#fff!important}
.tag.goldOnDark{color:var(--yellow)!important}

/* blue CTA band (landlord page) — darken + lift body text to AA */
.cta-band[style*="--blue"]{background:#1160AE!important}
.cta-band[style*="--blue"] p,.cta-band[style*="--blue"] .u-c8fa90{color:#EDF3FD!important}

/* landlord page blue CTA band — darken + lift body text to AA */
.cta-band.u-e013c8{background:#1160AE!important}
.cta-band.u-e013c8 p{color:#EDF3FD!important}

/* ---- Accessibility: links must not rely on colour alone (WCAG 1.4.1) ----
   Every inline link sits below 3:1 against its surrounding text, so each gets
   an underline. Buttons, nav, chips, cards and tiles are excluded - they have
   their own box/shape, which is a non-colour cue in its own right. */
main p a,main li a,main cite a,main small a,main .faq details p a,
main .review-pull a,main .honest a,main .sci a,main .surf .panel a,
main .gnote a,main .pricenote a,.legal a{
  text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px;
}
main p a:hover,main li a:hover,.legal a:hover{text-decoration-thickness:2px}
main .chipset a,main .btn,main .wp-block-button__link,main .ar-svc a,
main .svc,main .svcrow,main .lcard,main .job a,main .ah-grid a,
main .pcs a,main .problems a,main .way,main .ring a,main .related a,
main .covers .c a,main .neigh .chipset a,footer.site ul a,.bar a{
  text-decoration:none;
}

/* specificity top-up: footer.site a and .crumbs a in site.css outrank the rules above */
footer.site .legal a,.wrap.crumbs a{text-decoration:underline!important;text-underline-offset:2px;text-decoration-thickness:1px}
footer.site .legal a:hover,.wrap.crumbs a:hover{text-decoration-thickness:2px!important}

/* lightwrap tail: the laser hub has a dark body, so the 96px above the footer
   rendered dark and the CTA looked glued to it. Extend the white panel to carry
   that space, and drop the footer's own margin on those pages. */
.lightwrap{padding-bottom:96px!important}
body:has(.lightwrap) footer.site{margin-top:0}
@media(max-width:920px){.lightwrap{padding-bottom:64px!important}}

/* service list rows: inset content so it does not touch the rule ends */
.svcrow.svcrow{padding-left:28px;padding-right:28px}
@media(max-width:920px){.svcrow.svcrow{padding-left:18px;padding-right:18px}}

/* grid children must be allowed to shrink below their min-content width, or a
   long word forces the whole grid wider than the viewport on mobile. The block
   wrapper sits between the grid and its items, so it needs the rule too. */
.wp-block-group__inner-container{min-width:0}
[class*="grid"]>*,[class*="grid"]>.wp-block-group__inner-container>*,.score,.score>*,.score .wp-block-group__inner-container>*{min-width:0}

/* footer social icons - inline SVG, no image requests, inherits footer colour */
.social{display:flex;gap:10px;margin-top:16px}
.social a{width:40px;height:40px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,.09);color:#cfd0d2;text-decoration:none!important;transition:background .15s,color .15s,transform .15s}
.social a:hover,.social a:focus-visible{background:var(--red);color:#fff;transform:translateY(-2px)}
.social a:focus-visible{outline:2px solid #fff;outline-offset:2px}
.social svg{width:19px;height:19px;fill:currentColor;display:block}
@media(max-width:920px){.social{margin-top:14px}}
