/* Corrections for parent-theme rules and layouts shared by the city guides. */
.fr-page {
    margin-bottom: 0 !important; /* Override the theme's inline reveal-footer margin. */
    border-radius: 0;
    font-weight: 400;
}
.fr-page p, .fr-page li {
    color: inherit;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
}
.fr-page p a, .fr-page .fr-sources a, .fr-page .fr-related a {
    text-decoration: underline !important; /* Parent theme removes every underline. */
}
.fr-page .fr-hero { padding: 158px 0 48px; border-radius: 0; }
.fr-page h1 { font-size: clamp(2.35rem, 4.5vw, 4rem); line-height: 1.15; text-wrap: balance; }
.fr-page h2 { font-size: clamp(1.85rem, 3.5vw, 2.5rem); }
.fr-page h3 { font-size: 1.35rem; }
.fr-page .fr-eyebrow { color: var(--fr-teal); }
.fr-page .fr-hero .fr-eyebrow, .fr-page .fr-commercial .fr-eyebrow { color: #8ce0e5; }
.fr-page .fr-hero-intro { font-size: 1.05rem; }
.fr-page .fr-breadcrumb { margin-bottom: 24px; }
.fr-page .fr-section { padding: 56px 0; }
.fr-page .fr-actions { margin: 24px 0; gap: 12px; }
.fr-page .fr-button { gap: 14px; padding: 12px 20px; }
.fr-page .fr-jumpnav { padding: 10px 0; }
.fr-page .fr-jumpnav .fr-wrap { gap: 4px 24px; }
.fr-page .fr-jumpnav a { display: inline-flex; align-items: center; min-height: 40px; }
.fr-page .fr-directory-meta { font-size: .85rem; }
.fr-page .fr-filters { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1.2fr) auto; }
.fr-page .fr-filters > div { min-width: 0; }
.fr-page .fr-filters input, .fr-page .fr-filters select {
    box-sizing: border-box;
    max-width: 100%;
    margin: 0;
    font-size: 1rem; /* Prevent focus zoom in iOS Safari. */
}
.fr-page .fr-filters label { font-size: .82rem; }
.fr-page .fr-source-note { font-size: .85rem; line-height: 1.65; }
.fr-page .fr-city-grid { gap: 16px; }
.fr-page .fr-city > a { min-height: 178px; padding: 20px; }
.fr-page .fr-city h3 { font-size: 1.4rem; overflow-wrap: normal; }
.fr-page .fr-city-country { font-size: .72rem; }
.fr-page .fr-city-region { font-size: .85rem; }
.fr-page .fr-city-link { align-items: center; gap: 8px; font-size: .85rem; }
.fr-page .fr-steps { margin-bottom: 36px; }
.fr-page .fr-steps p, .fr-page .fr-checks p { font-size: .95rem; }
.fr-page .fr-commercial { padding: 36px; }
.fr-page .fr-commercial .fr-actions { margin-bottom: 0; }
.fr-page .fr-faq summary { position: relative; padding-right: 36px; list-style: none; }
.fr-page .fr-faq summary::-webkit-details-marker { display: none; }
.fr-page .fr-faq summary::after { content: "+"; position: absolute; right: 4px; top: 0; font-size: 1.4rem; }
.fr-page .fr-faq details[open] > summary::after { content: "−"; }
.fr-page .fr-hero :focus-visible, .fr-page .fr-commercial :focus-visible { outline-color: #8ce0e5; }
.fr-page .fr-prose { max-width: 860px; }
.fr-page .fr-prose h3 { margin-top: 28px; }
.fr-page .fr-company-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; margin-top: 28px; }
.fr-page .fr-company { display: flex; flex-direction: column; padding: 26px; border: 1px solid var(--fr-line); border-radius: 10px; background: #fff; scroll-margin-top: 110px; }
.fr-page .fr-company h3 { margin-bottom: 14px; font-size: 1.45rem; }
.fr-page .fr-company p { font-size: .94rem; }
.fr-page .fr-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 16px; padding: 0; list-style: none; }
.fr-page .fr-tags li { padding: 4px 9px; border-radius: 4px; background: #edf5f7; color: var(--fr-navy); font-size: .78rem; }
.fr-page .fr-company .fr-actions { margin-top: auto; margin-bottom: 0; padding-top: 10px; }
.fr-page .fr-company .fr-button { min-height: 44px; padding: 10px 14px; background: var(--fr-navy); color: #fff; font-size: .85rem; }
.fr-page .fr-company .fr-button:hover { background: var(--fr-teal); }
.fr-page .fr-company .fr-source-note { margin: 14px 0 0; font-size: .78rem; }
.fr-page .fr-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 26px 0; }
.fr-page .fr-stat { margin: 0; padding: 18px; border: 1px solid var(--fr-line); border-radius: 8px; background: #fff; }
.fr-page .fr-stat strong { display: block; color: var(--fr-navy); font-size: 1.7rem; line-height: 1.3; }
.fr-page .fr-stat span { color: var(--fr-muted); font-size: .83rem; }
.fr-skip { position: fixed; top: -100px; left: 16px; z-index: 100; padding: 12px 18px; border-radius: 4px; background: #fff; color: #083f5c; }
.fr-skip:focus { top: 12px; }

/* A normal-flow footer avoids clipped footer content and empty reveal space. */
body.b2brs-directory-page #nav-desktop .nav-mainsection { background: #fff; box-shadow: 0 3px 14px #083f5c16; }
body.b2brs-directory-page #nav-desktop .nav-mainsection ul li a { padding: 10px 8px; font-size: 14px !important; white-space: nowrap; }
body.b2brs-directory-page #nav-desktop .nav-mainsection .nav-contact-button { font-size: 14px !important; }
body.b2brs-directory-page footer {
    position: relative;
    inset: auto;
    display: grid;
    grid-template-columns: minmax(150px, .9fr) minmax(190px, 1fr) minmax(300px, 1.6fr);
    grid-template-rows: auto;
    gap: 32px;
    padding: 52px max(24px, calc((100% - 1140px) / 2)) 28px;
}
body.b2brs-directory-page footer .section-brand,
body.b2brs-directory-page footer .section-generalinfo,
body.b2brs-directory-page footer .section-sitemap {
    display: block;
    grid-column: auto;
    grid-row: auto;
    padding: 0;
}
body.b2brs-directory-page footer .footer-logo { display: inline-block; width: auto; }
body.b2brs-directory-page footer .footer-logo img { width: min(200px, 100%); height: auto; }
body.b2brs-directory-page footer .sitemap-pagelinks { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 20px; }
body.b2brs-directory-page footer .sitemap-pagelinks a { font-size: .88rem; line-height: 1.5; }
body.b2brs-directory-page footer .sitemap-pagelinks a::after { display: none; }
body.b2brs-directory-page footer .section-generalinfo p { font-size: .88rem; line-height: 1.7; overflow-wrap: anywhere; }
body.b2brs-directory-page footer .section-needhelp { position: static; grid-column: 1 / -1; grid-row: auto; height: auto; padding: 18px 22px; }
body.b2brs-directory-page footer .section-needhelp::before { display: none; }
body.b2brs-directory-page footer .section-needhelp p { position: static; transform: none; font-size: 1rem; line-height: 1.7; }
body.b2brs-directory-page footer .site-credits { position: static; grid-column: 1 / -1; margin: 0; font-size: .85rem; line-height: 1.7; }
body.b2brs-directory-page footer .site-credits { color: #8ce0e5 !important; }
body.b2brs-directory-page footer .footer-heading { color: #8ce0e5; }
body.b2brs-directory-page #sidemenu { height: 100dvh; max-height: 100dvh; overflow-y: auto; transition: right .2s ease; }
body.b2brs-directory-page #sidemenu-panelbtn { transition: none; }
body.b2brs-directory-page #sidemenu > p { position: static; margin-top: 24px; font-size: .8rem; }
body.b2brs-directory-page #sidemenu :focus-visible { outline: 2px solid #8ce0e5; outline-offset: 4px; }

@media (max-width: 1200px) {
    body.b2brs-directory-page #wp-desktopmenu-wrapper { display: none; }
    body.b2brs-directory-page #sidemenu-mainbtn { display: inline-block; }
}
@media (max-width: 1000px) {
    .fr-page .fr-filters { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; }
    .fr-page .fr-search { grid-column: 1 / -1; }
    body.b2brs-directory-page footer { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    body.b2brs-directory-page footer .section-sitemap { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
    .fr-page .fr-hero { padding: 154px 0 38px; }
    .fr-page .fr-hero-intro { font-size: 1rem; }
    .fr-page .fr-section { padding: 42px 0; }
    .fr-page .fr-city-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
    .fr-page .fr-city > a { min-height: 174px; padding: 16px; }
    .fr-page .fr-city h3 { font-size: 1.3rem; }
    .fr-page .fr-city-link { font-size: .8rem; }
    .fr-page .fr-filters { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; padding: 16px; }
    .fr-page .fr-reset { grid-column: 1 / -1; justify-self: start; min-height: 44px; padding: 4px 0; }
    .fr-page .fr-company-grid { grid-template-columns: minmax(0, 1fr); }
    .fr-page .fr-commercial, .fr-page .fr-company { padding: 24px 20px; }
    .fr-page .fr-stats { gap: 8px; }
    .fr-page .fr-stat { padding: 12px; }
    .fr-page .fr-stat strong { font-size: 1.4rem; }
}
@media (max-width: 640px) {
    .fr-page table { min-width: 0; }
    .fr-page table, .fr-page caption, .fr-page tbody { display: block; }
    .fr-page thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); }
    .fr-page tbody tr { display: grid; grid-template-columns: minmax(0, 1fr); padding: 16px; border-bottom: 1px solid var(--fr-line); }
    .fr-page tbody tr:last-child { border-bottom: 0; }
    .fr-page tbody th, .fr-page tbody td { display: block; width: 100%; padding: 0; border: 0; }
    .fr-page tbody th { margin-bottom: 8px; }
    body.b2brs-directory-page footer { grid-template-columns: minmax(0, 1fr); gap: 28px; padding: 38px 20px 26px; }
    body.b2brs-directory-page footer .section-brand,
    body.b2brs-directory-page footer .section-generalinfo,
    body.b2brs-directory-page footer .section-sitemap { grid-column: 1; }
    body.b2brs-directory-page .nav-topsection p { font-size: 12px; }
    body.b2brs-directory-page #nav-desktop .nav-mainsection { padding-inline: 18px; }
    body.b2brs-directory-page #nav-desktop .nav-mainsection .topnav-logo { height: 52px; }
}
@media (max-width: 380px) {
    .fr-page .fr-filters { grid-template-columns: minmax(0, 1fr); }
    .fr-page .fr-city > a { padding: 14px; }
    .fr-page .fr-city-country { font-size: .66rem; }
    .fr-page .fr-city-link { gap: 4px; font-size: .75rem; }
    .fr-page .fr-city-region { font-size: .78rem; }
    .fr-page .fr-stats { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
    .fr-page *, body.b2brs-directory-page #nav-desktop { scroll-behavior: auto; transition: none; }
}
