/* =================================================================
   FIRM PROFILE — "ELEVATED BRAND BLUE" REDESIGN LAYER
   -----------------------------------------------------------------
   Loads AFTER firm-profile.css and overrides only the visual layer.
   The original firm-profile.css is untouched. Same markup / classes.
   To revert: remove the <link> to this file in single-gd_place.php.
   Created: 2026-06-28
   ================================================================= */

/* ---------- Refresh design tokens (scoped to the page) ---------- */
.rs-firm-page {
    --rf-blue:        #0064E0;
    --rf-blue-2:      #1A7BF0;
    --rf-blue-dark:   #0143B5;
    --rf-ink:         #0A1B33;
    --rf-text:        #1E2A3A;
    --rf-mid:         #586675;
    --rf-muted:       #8A93A0;
    --rf-line:        #E6ECF4;
    --rf-line-soft:   #EEF2F8;
    --rf-bg:          #F2F6FC;
    --rf-card:        #FFFFFF;
    --rf-emerald:     #00A862;
    --rf-emerald-d:   #00824B;
    --rf-gold:        #F7B928;
    --rf-red:         #E41E3F;

    --rf-grad:        linear-gradient(135deg, #1A7BF0 0%, #0064E0 52%, #0143B5 100%);
    --rf-grad-emerald:linear-gradient(135deg, #14C074 0%, #00A862 100%);
    --rf-hero-bg:     linear-gradient(180deg, #FFFFFF 0%, #EAF2FF 100%);

    --rf-shadow-sm:   0 1px 2px rgba(16,24,40,.05);
    --rf-shadow:      0 2px 6px rgba(13,38,76,.05), 0 14px 30px -18px rgba(13,38,76,.22);
    --rf-shadow-lg:   0 24px 60px -24px rgba(13,38,76,.32);
    --rf-shadow-blue: 0 10px 24px -8px rgba(0,100,224,.45);

    --rf-radius:      20px;
    --rf-radius-sm:   12px;
    --rf-radius-pill: 999px;

    background:
        radial-gradient(1100px 420px at 50% -160px, rgba(0,100,224,.10), transparent 72%),
        var(--rf-bg);
}

.rs-firm-page,
.rs-firm-page * { -webkit-font-smoothing: antialiased; }

/* ======================= TRUST BAR ======================= */
.rs-firm-page .rs-trust-bar {
    background: linear-gradient(135deg, #0A1B33 0%, #0143B5 100%);
    padding: 11px 0;
    font-size: 12.5px;
    font-weight: 600;
    letter-spacing: .2px;
    box-shadow: inset 0 -1px 0 rgba(255,255,255,.08);
}
.rs-firm-page .rs-trust-bar-item i { color: #6FE0AE; }

/* ======================= HEADER ======================= */
.rs-firm-page .rs-firm-header {
    background: var(--rf-hero-bg);
    border-bottom: 1px solid var(--rf-line);
    position: relative;
    overflow: hidden;
}
.rs-firm-page .rs-firm-header::before {
    content: "";
    position: absolute;
    top: -140px; right: -120px;
    width: 420px; height: 420px;
    background: radial-gradient(circle at center, rgba(0,100,224,.12), transparent 65%);
    pointer-events: none;
}

.rs-firm-page .rs-firm-breadcrumb {
    padding: 16px 0 12px;
    font-size: 12.5px;
    font-weight: 500;
}
.rs-firm-page .rs-firm-breadcrumb-current { color: var(--rf-ink); }

.rs-firm-page .rs-firm-info-row {
    gap: 26px;
    padding: 20px;
    position: relative;
    z-index: 1;
}

/* Logo — premium framed tile */
.rs-firm-page .rs-firm-logo {
    width: 108px; height: 108px;
    border-radius: 18px;
    border: 1px solid var(--rf-line);
    background: #fff;
    box-shadow: var(--rf-shadow);
    position: relative;
}
.rs-firm-page .rs-firm-logo::after {
    content: "";
    position: absolute; inset: 0;
    border-radius: 18px;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.6);
    pointer-events: none;
}
.rs-firm-page .rs-firm-logo-placeholder {
    background: var(--rf-grad);
    color: #fff;
    font-weight: 800;
    letter-spacing: -.5px;
}

/* Firm name + summary */
.rs-firm-page .rs-firm-info-text h1 {
    font-size: 31px;
    font-weight: 800;
    letter-spacing: -.02em;
    line-height: 1.12;
    color: var(--rf-ink) !important;
    margin-bottom: 10px;
}
.rs-firm-page .rs-firm-hero-summary {
    color: var(--rf-mid);
    font-size: 14.5px;
    line-height: 1.6;
    max-width: 640px;
    margin: 10px 0 14px;
}

/* Badge row */
.rs-firm-page .rs-firm-badge-row { gap: 8px; }
.rs-firm-page .rs-status-badge,
.rs-firm-page .rs-verified-badge {
    border-radius: var(--rf-radius-pill);
    padding: 6px 13px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .2px;
    border: 1px solid transparent;
}
.rs-firm-page .rs-status-badge {
    background: rgba(0,168,98,.10);
    color: var(--rf-emerald-d);
}
.rs-firm-page .rs-status-badge i { color: var(--rf-emerald); font-size: 8px; }
.rs-firm-page .rs-verified-badge {
    background: rgba(0,100,224,.10);
    color: var(--rf-blue-dark);
}
.rs-firm-page .rs-verified-badge.rs-unclaimed-badge {
    background: rgba(247,185,40,.14);
    color: #9A6B00;
}

/* Header rating line */
.rs-firm-page .rs-firm-header-rating { gap: 7px; align-items: center; margin: 4px 0 6px; }
.rs-firm-page .rs-firm-header-rating .rating-num {
    font-size: 22px;
    font-weight: 800;
    color: var(--rf-ink);
    letter-spacing: -.02em;
}
.rs-firm-page .rs-firm-header-rating .review-link {
    color: var(--rf-blue) !important;
    font-weight: 600;
    font-size: 13px;
}
.rs-firm-page .rs-firm-header-rating .review-link:hover { text-decoration: underline; }

/* Header meta chips */
.rs-firm-page .rs-firm-header-meta { gap: 10px 18px; margin-top: 12px; }
.rs-firm-page .rs-firm-header-meta span {
    font-size: 12.5px;
    color: var(--rf-text);
    font-weight: 600;
}
.rs-firm-page .rs-firm-header-meta i { color: var(--rf-blue); }

/* Claim link */
.rs-firm-page .rs-claim-link {
    display: inline-flex; align-items: center; gap: 7px;
    margin-top: 14px;
    padding: 9px 15px;
    border-radius: var(--rf-radius-pill);
    background: rgba(247,185,40,.12);
    color: #8A5A00 !important;
    font-weight: 700;
    font-size: 13px;
    border: 1px dashed rgba(247,185,40,.5);
    transition: all .18s ease;
}
.rs-firm-page .rs-claim-link:hover { background: rgba(247,185,40,.2); transform: translateY(-1px); }

/* ---------- Header action buttons ---------- */
.rs-firm-page .rs-firm-header-actions { gap: 10px; }
.rs-firm-page .rs-btn-quote,
.rs-firm-page .rs-btn-call-header,
.rs-firm-page .rs-btn-write-review-header {
    border-radius: var(--rf-radius-pill);
    font-weight: 700;
    font-size: 13.5px;
    padding: 12px 20px;
    letter-spacing: .2px;
    transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}
.rs-firm-page .rs-btn-quote {
    background: var(--rf-grad);
    color: #fff !important;
    box-shadow: var(--rf-shadow-blue);
    border: none;
}
.rs-firm-page .rs-btn-quote:hover { transform: translateY(-2px); box-shadow: 0 14px 30px -8px rgba(0,100,224,.55); }
.rs-firm-page .rs-btn-call-header {
    background: #fff;
    color: var(--rf-blue-dark) !important;
    border: 1.5px solid var(--rf-line);
    box-shadow: var(--rf-shadow-sm);
}
.rs-firm-page .rs-btn-call-header:hover { border-color: var(--rf-blue); transform: translateY(-2px); }
.rs-firm-page .rs-btn-write-review-header {
    background: rgba(0,168,98,.10);
    color: var(--rf-emerald-d) !important;
    border: 1.5px solid rgba(0,168,98,.25);
}
.rs-firm-page .rs-btn-write-review-header:hover { background: rgba(0,168,98,.16); transform: translateY(-2px); }

/* ---------- Decision strip → stat cards ---------- */
.rs-firm-page .rs-firm-decision-strip {
    background: #fff;
    border: 1px solid var(--rf-line);
    border-radius: var(--rf-radius);
    box-shadow: var(--rf-shadow);
    padding: 6px;
    gap: 0;
    margin-top: 8px;
    overflow: hidden;
}
.rs-firm-page .rs-firm-decision-item {
    flex: 1;
    padding: 16px 18px;
    border: none !important;
    border-right: 1px solid var(--rf-line-soft) !important;
    border-radius: var(--rf-radius-sm);
    transition: background .16s ease, transform .16s ease;
}
.rs-firm-page .rs-firm-decision-item:last-child { border-right: none !important; }
.rs-firm-page a.rs-firm-decision-item:hover { background: rgba(0,100,224,.05); }
.rs-firm-page .rs-firm-decision-item span {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .6px;
    color: var(--rf-muted);
    font-weight: 700;
}
.rs-firm-page .rs-firm-decision-item strong {
    display: block;
    font-size: 23px;
    font-weight: 800;
    color: var(--rf-ink);
    letter-spacing: -.02em;
    margin: 3px 0 1px;
}
.rs-firm-page .rs-firm-decision-item small { color: var(--rf-mid); font-size: 11.5px; }

/* ======================= RATING SNAPSHOT ======================= */
.rs-firm-page .rs-firm-rating-section {
    background: transparent;
    padding: 40px;
}
.rs-firm-page .rs-rating-section-heading { text-align: center; margin-bottom: 24px; }
.rs-firm-page .rs-rating-section-heading span {
    display: inline-block;
    font-size: 11.5px;
    font-weight: 800;
    letter-spacing: 1.4px;
    text-transform: uppercase;
    color: var(--rf-blue);
    background: rgba(0,100,224,.08);
    padding: 5px 12px;
    border-radius: var(--rf-radius-pill);
    margin-bottom: 12px;
}
.rs-firm-page .rs-rating-section-heading h2 {
    font-size: 26px; font-weight: 800; color: var(--rf-ink);
    letter-spacing: -.02em; margin-bottom: 6px;
}
.rs-firm-page .rs-rating-section-heading p { color: var(--rf-mid); font-size: 14px; }

.rs-firm-page .rs-firm-rating-grid {
    background: #fff;
    border: 1px solid var(--rf-line);
    border-radius: var(--rf-radius);
    box-shadow: var(--rf-shadow);
    padding: 30px;
    gap: 34px;
}

/* Big rating block */
.rs-firm-page .rs-firm-rating-big {
    background: linear-gradient(180deg, #F7FAFF 0%, #EEF4FF 100%);
    border: 1px solid var(--rf-line);
    border-radius: var(--rf-radius-sm);
    padding: 22px 18px;
}
.rs-firm-page .rs-firm-rating-big .big-number {
    font-size: 58px;
    font-weight: 800;
    line-height: 1;
    letter-spacing: -.03em;
    background: var(--rf-grad);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent;
}
.rs-firm-page .rs-firm-rating-big .big-label {
    color: var(--rf-emerald-d);
    font-weight: 800;
    font-size: 15px;
    margin: 8px 0 6px;
    text-transform: uppercase;
    letter-spacing: .5px;
}
.rs-firm-page .rs-firm-rating-big .big-count { color: var(--rf-mid); font-size: 12.5px; }
.rs-firm-page .rs-firm-rating-big .big-count a { color: var(--rf-blue) !important; font-weight: 700; }

/* Breakdown bars */
.rs-firm-page .rs-firm-bar-label { color: var(--rf-text); font-weight: 600; font-size: 12.5px; }
.rs-firm-page .rs-firm-bar-track {
    background: #EDF1F7;
    border-radius: var(--rf-radius-pill);
    height: 9px;
    overflow: hidden;
}
.rs-firm-page .rs-firm-bar-fill {
    background: var(--rf-grad-emerald);
    border-radius: var(--rf-radius-pill);
    height: 100%;
    transform-origin: left center;
    animation: rf-grow .9s cubic-bezier(.2,.7,.2,1) both;
}
.rs-firm-page .rs-firm-bar-pct { color: var(--rf-ink); font-weight: 700; font-size: 12px; }
.rs-firm-page .rs-firm-bar-count { color: var(--rf-muted); font-size: 11.5px; }

/* Circle badges */
.rs-firm-page .rs-firm-circle-badge {
    background: linear-gradient(180deg, #FFFFFF 0%, #F7FAFF 100%);
    border: 1px solid var(--rf-line);
    border-radius: var(--rf-radius-sm);
    padding: 14px;
    transition: transform .16s ease, box-shadow .16s ease;
}
.rs-firm-page .rs-firm-circle-badge:hover { transform: translateY(-2px); box-shadow: var(--rf-shadow); }
.rs-firm-page .rs-firm-circle-icon {
    background: var(--rf-grad);
    color: #fff;
    box-shadow: var(--rf-shadow-blue);
}
.rs-firm-page .rs-firm-circle-badge:nth-child(1) .rs-firm-circle-icon { background: var(--rf-grad-emerald); box-shadow: 0 8px 18px -6px rgba(0,168,98,.5); }
.rs-firm-page .rs-firm-circle-badge .badge-text { color: var(--rf-ink); font-weight: 700; }
.rs-firm-page .rs-firm-circle-badge .badge-text small { color: var(--rf-mid); font-weight: 500; }

/* ======================= STICKY TAB BAR ======================= */
.rs-firm-page .rs-firm-tab-bar {
    background: rgba(255,255,255,.82);
    -webkit-backdrop-filter: saturate(180%) blur(12px);
    backdrop-filter: saturate(180%) blur(12px);
    border-bottom: 1px solid var(--rf-line);
    box-shadow: 0 2px 10px -6px rgba(13,38,76,.18);
    margin-bottom: 20px;
}
.rs-firm-page .rs-firm-tab {
    font-weight: 700;
    font-size: 14px;
    color: var(--rf-mid);
    border: none;
    background: transparent;
    position: relative;
    padding: 16px 4px;
    transition: color .16s ease;
}
.rs-firm-page .rs-firm-tab::after {
    content: "";
    position: absolute; left: 0; right: 0; bottom: -1px;
    height: 3px; border-radius: 3px 3px 0 0;
    background: var(--rf-grad);
    transform: scaleX(0);
    transition: transform .22s cubic-bezier(.2,.7,.2,1);
}
.rs-firm-page .rs-firm-tab:hover { color: var(--rf-ink); }
.rs-firm-page .rs-firm-tab.active { color: var(--rf-blue); }
.rs-firm-page .rs-firm-tab.active::after { transform: scaleX(1); }
.rs-firm-page .rs-btn-write-review-tab {
    background: var(--rf-grad);
    color: #fff !important;
    border-radius: var(--rf-radius-pill);
    font-weight: 700;
    padding: 9px 18px;
    box-shadow: var(--rf-shadow-blue);
    transition: transform .16s ease;
}
.rs-firm-page .rs-btn-write-review-tab:hover { transform: translateY(-2px); }

/* ======================= CONTENT CARDS ======================= */
.rs-firm-page .rs-firm-content { padding-top: 28px; padding-bottom: 48px; }
.rs-firm-page .rs-firm-card {
    background: var(--rf-card);
    border: 1px solid var(--rf-line);
    border-radius: var(--rf-radius);
    box-shadow: var(--rf-shadow);
    padding: 26px 28px;
    margin-bottom: 22px;
    transition: box-shadow .2s ease, transform .2s ease;
}
.rs-firm-page .rs-firm-card:hover { box-shadow: var(--rf-shadow-lg); }
.rs-firm-page .rs-firm-card > h3 {
    font-size: 19px;
    font-weight: 800;
    color: var(--rf-ink);
    letter-spacing: -.01em;
    padding-bottom: 14px;
    margin-bottom: 16px;
    position: relative;
}
.rs-firm-page .rs-firm-card > h3::after {
    content: "";
    position: absolute; left: 0; bottom: 0;
    width: 42px; height: 3px; border-radius: 3px;
    background: var(--rf-grad);
}
.rs-firm-page .rs-firm-card-subtitle {
    font-size: 14px; font-weight: 700; color: var(--rf-ink);
    margin: 22px 0 12px;
}
.rs-firm-page .rs-firm-about-text { color: var(--rf-text); line-height: 1.7; font-size: 14.5px; }

/* Section titles (Reviews / Team / Locations) */
.rs-firm-page .rs-firm-section-title {
    font-size: 23px;
    font-weight: 800;
    color: var(--rf-ink);
    letter-spacing: -.02em;
    margin: 8px 0 18px;
    display: flex; align-items: center; gap: 12px;
}
.rs-firm-page .rs-firm-section-title::before {
    content: "";
    width: 5px; height: 26px; border-radius: 4px;
    background: var(--rf-grad);
}

/* ---------- Suitability card (hero CTA in overview) ---------- */
.rs-firm-page .rs-firm-suitability-card {
    background:
        radial-gradient(600px 200px at 100% 0%, rgba(255,255,255,.12), transparent 60%),
        linear-gradient(135deg, #0A1B33 0%, #0143B5 100%);
    border: none;
    border-radius: var(--rf-radius);
    box-shadow: var(--rf-shadow-lg);
    padding: 28px 30px;
    color: #fff;
    overflow: hidden;
}
.rs-firm-page .rs-firm-suitability-card .rs-eyebrow {
    color: #6FE0AE; font-weight: 800; letter-spacing: 1px;
    text-transform: uppercase; font-size: 11.5px;
}
.rs-firm-page .rs-firm-suitability-card h2 { color: #fff; font-size: 21px; font-weight: 800; letter-spacing: -.01em; margin: 8px 0; }
.rs-firm-page .rs-firm-suitability-card p { color: rgba(255,255,255,.82); font-size: 14px; line-height: 1.6; }

/* Practice area tags */
.rs-firm-page .rs-firm-practice-tag {
    background: rgba(0,100,224,.07);
    color: var(--rf-blue-dark);
    border: 1px solid rgba(0,100,224,.16);
    border-radius: var(--rf-radius-pill);
    padding: 7px 14px;
    font-size: 12.5px;
    font-weight: 600;
    transition: all .16s ease;
}
.rs-firm-page .rs-firm-practice-tag:hover { background: rgba(0,100,224,.13); transform: translateY(-1px); }

/* Regulator line */
.rs-firm-page .rs-regulator-line {
    margin-top: 22px;
    padding: 14px 16px;
    background: rgba(0,168,98,.07);
    border: 1px solid rgba(0,168,98,.18);
    border-radius: var(--rf-radius-sm);
    color: var(--rf-text);
    font-size: 13.5px;
}
.rs-firm-page .rs-regulator-line i { color: var(--rf-emerald); }

/* ---------- Comparison charts ---------- */
.rs-firm-page .rs-comparison-label { color: var(--rf-ink); font-weight: 700; font-size: 14px; margin-bottom: 10px; }
.rs-firm-page .rs-bar-track { background: #EDF1F7; border-radius: var(--rf-radius-pill); height: 22px; overflow: hidden; }
.rs-firm-page .rs-bar-fill {
    border-radius: var(--rf-radius-pill); height: 100%;
    transform-origin: left center;
    animation: rf-grow 1s cubic-bezier(.2,.7,.2,1) both;
}
.rs-firm-page .rs-bar-firm { background: var(--rf-grad); }
.rs-firm-page .rs-bar-avg { background: #C2CDDB; }
/* Comparison label pills — set BOTH bg + text so contrast is deterministic
   (base has conflicting duplicate .rs-bar-tag backgrounds). THIS FIRM = blue +
   white (prominent, matches the blue firm bar); NATIONAL AVG = grey + dark
   (muted, matches the grey average bar). */
.rs-firm-page .rs-bar-tag { font-size: 10.5px; font-weight: 800; letter-spacing: .4px; background: var(--rf-blue); color: #fff; }
.rs-firm-page .rs-bar-tag-avg { background: #E4E8EF; color: #5A6675; }
.rs-firm-page .rs-bar-value { color: var(--rf-ink); font-weight: 800; }
.rs-firm-page .rs-bar-value-avg { color: var(--rf-muted); }
.rs-firm-page .rs-comparison-disclaimer { color: var(--rf-muted); font-size: 12px; margin-top: 14px; }

/* ---------- Rankings table ---------- */
.rs-firm-page .rs-rankings-table { border-collapse: separate; border-spacing: 0; }
.rs-firm-page .rs-rankings-table th {
    font-size: 11px; text-transform: uppercase; letter-spacing: .6px;
    color: var(--rf-muted); font-weight: 800;
    border-bottom: 2px solid var(--rf-line);
    padding: 10px 12px;
}
.rs-firm-page .rs-rankings-table td { padding: 12px; border-bottom: 1px solid var(--rf-line-soft); }
.rs-firm-page .rs-rankings-table tr:last-child td { border-bottom: none; }
.rs-firm-page .rs-rank-badge {
    border-radius: var(--rf-radius-pill);
    padding: 5px 12px; font-size: 12px; font-weight: 700; color: #fff;
}
.rs-firm-page .rs-rankings-table strong { color: var(--rf-ink); font-weight: 800; }
.rs-firm-page .rs-rank-of { color: var(--rf-muted); }

/* ---------- Accreditations ---------- */
.rs-firm-page .rs-accred-badge {
    border-radius: var(--rf-radius-sm);
    padding: 12px 14px;
    background: #fff;
    box-shadow: var(--rf-shadow-sm);
    border-width: 1px; border-style: solid;
    font-weight: 600; font-size: 13px; color: var(--rf-text);
    transition: transform .16s ease, box-shadow .16s ease;
}
.rs-firm-page .rs-accred-badge:hover { transform: translateY(-2px); box-shadow: var(--rf-shadow); }

/* ======================= REVIEWS ======================= */
.rs-firm-page .rs-review-source-label {
    display: inline-flex; align-items: center; gap: 7px;
    background: rgba(0,168,98,.08); color: var(--rf-emerald-d);
    border-radius: var(--rf-radius-pill);
    padding: 7px 14px; font-size: 12.5px; font-weight: 700;
    margin-bottom: 16px;
}
.rs-firm-page .rs-review-source-label i { color: var(--rf-emerald); }

/* Filter pills + sorts */
.rs-firm-page .rs-review-filters {
    background: #fff;
    border: 1px solid var(--rf-line);
    border-radius: var(--rf-radius-sm);
    box-shadow: var(--rf-shadow-sm);
    padding: 14px 16px;
    gap: 8px;
    align-items: center;
}
.rs-firm-page .rs-filter-label { color: var(--rf-muted); font-weight: 700; font-size: 12px; text-transform: uppercase; letter-spacing: .5px; }
.rs-firm-page .rs-filter-pill {
    background: #F3F6FC;
    border: 1.5px solid transparent;
    border-radius: var(--rf-radius-pill);
    padding: 7px 14px;
    font-size: 12.5px; font-weight: 700; color: var(--rf-mid);
    transition: all .16s ease;
}
.rs-firm-page .rs-filter-pill:hover { border-color: var(--rf-line); color: var(--rf-ink); }
.rs-firm-page .rs-filter-pill.active {
    background: var(--rf-grad); color: #fff; border-color: transparent;
    box-shadow: var(--rf-shadow-blue);
}
.rs-firm-page .rs-sort-select {
    border: 1.5px solid var(--rf-line);
    border-radius: var(--rf-radius-pill);
    padding: 8px 14px;
    font-size: 12.5px; font-weight: 600; color: var(--rf-text);
    background: #fff;
}
.rs-firm-page .rs-sort-select:focus { outline: none; border-color: var(--rf-blue); }

/* Review card */
.rs-firm-page .rs-firm-review-card {
    background: #fff;
    border: 1px solid var(--rf-line);
    border-radius: var(--rf-radius);
    box-shadow: var(--rf-shadow);
    padding: 22px 24px;
    margin-bottom: 16px;
    transition: box-shadow .2s ease, transform .2s ease;
}
.rs-firm-page .rs-firm-review-card:hover { box-shadow: var(--rf-shadow-lg); transform: translateY(-2px); }
.rs-firm-page .rs-firm-review-avatar {
    background: var(--rf-grad);
    color: #fff; font-weight: 800;
    box-shadow: var(--rf-shadow-blue);
    border: 2px solid #fff;
}
.rs-firm-page .rs-firm-review-info h4 { color: var(--rf-ink); font-weight: 700; font-size: 15px; }
.rs-firm-page .rs-firm-review-date { color: var(--rf-muted); font-size: 12.5px; }
.rs-firm-page .rs-review-verified { color: var(--rf-emerald-d); font-weight: 700; font-size: 11.5px; }
.rs-firm-page .rs-review-verified i { color: var(--rf-emerald); }
.rs-firm-page .rs-firm-review-title { color: var(--rf-ink); font-weight: 800; font-size: 16px; margin: 12px 0 8px; letter-spacing: -.01em; }
.rs-firm-page .rs-firm-review-text { color: var(--rf-text); line-height: 1.7; font-size: 14px; }
.rs-firm-page .rs-firm-review-matter {
    display: inline-block; margin-top: 12px;
    background: rgba(0,100,224,.07); color: var(--rf-blue-dark);
    border-radius: var(--rf-radius-pill);
    padding: 5px 12px; font-size: 11.5px; font-weight: 700;
}

/* Owner reply panel */
.rs-firm-page .rs-firm-owner-reply {
    background: linear-gradient(180deg, #F7FAFF 0%, #EEF4FF 100%);
    border: 1px solid rgba(0,100,224,.16);
    border-left: 3px solid var(--rf-blue);
    border-radius: var(--rf-radius-sm);
    padding: 16px 18px;
    margin-top: 16px;
}
.rs-firm-page .rs-firm-owner-reply .reply-label { color: var(--rf-blue-dark); font-weight: 800; font-size: 12px; text-transform: uppercase; letter-spacing: .5px; }
.rs-firm-page .rs-firm-owner-reply .reply-from { color: var(--rf-mid); font-size: 12.5px; }
.rs-firm-page .rs-firm-owner-reply p { color: var(--rf-text); font-size: 13.5px; line-height: 1.6; margin-top: 6px; }

/* Review footer */
.rs-firm-page .rs-firm-review-footer { border-top: 1px solid var(--rf-line-soft); margin-top: 16px; padding-top: 14px; }
.rs-firm-page .rs-helpful-label { color: var(--rf-mid); font-size: 12.5px; font-weight: 600; }
.rs-firm-page .rs-icon-btn {
    border: 1.5px solid var(--rf-line);
    border-radius: var(--rf-radius-pill);
    background: #fff; color: var(--rf-mid);
    padding: 6px 12px; font-size: 12.5px; font-weight: 600;
    transition: all .16s ease;
}
.rs-firm-page .rs-icon-btn:hover { border-color: var(--rf-blue); color: var(--rf-blue); }
.rs-firm-page .rs-helpful-wrap.rs-voted .rs-helpful-btn[data-vote="yes"] { border-color: var(--rf-emerald); color: var(--rf-emerald-d); background: rgba(0,168,98,.08); }
.rs-firm-page .review-source { color: var(--rf-muted); font-size: 12px; }
.rs-firm-page .review-source .rs-logo { color: var(--rf-blue); font-weight: 700; }
.rs-firm-page .review-source .rs-logo-google { color: #4285F4; font-weight: 700; }

/* Load more */
.rs-firm-page .rs-load-more-btn {
    background: #fff;
    border: 1.5px solid var(--rf-line);
    border-radius: var(--rf-radius-pill);
    color: var(--rf-blue-dark);
    font-weight: 700; font-size: 14px;
    padding: 12px 26px;
    box-shadow: var(--rf-shadow-sm);
    transition: all .16s ease;
}
.rs-firm-page .rs-load-more-btn:hover { border-color: var(--rf-blue); background: rgba(0,100,224,.04); transform: translateY(-2px); }
.rs-firm-page #load-more-count { color: var(--rf-muted); font-weight: 600; }

/* ======================= TEAM ======================= */
.rs-firm-page .rs-firm-team-member {
    background: #fff;
    border: 1px solid var(--rf-line);
    border-radius: var(--rf-radius);
    box-shadow: var(--rf-shadow);
    padding: 24px 18px;
    transition: box-shadow .2s ease, transform .2s ease;
}
.rs-firm-page .rs-firm-team-member:hover { transform: translateY(-4px); box-shadow: var(--rf-shadow-lg); }
.rs-firm-page .rs-firm-team-avatar {
    background: var(--rf-grad);
    color: #fff; font-weight: 800;
    box-shadow: var(--rf-shadow-blue);
    border: 3px solid #fff;
    outline: 1px solid var(--rf-line);
}
.rs-firm-page .rs-firm-team-member h4 { color: var(--rf-ink); font-weight: 700; font-size: 16px; margin-top: 12px; }
.rs-firm-page .rs-firm-team-member .team-role { color: var(--rf-mid); font-size: 12.5px; font-weight: 600; }
.rs-firm-page .rs-firm-view-profile {
    display: inline-block; margin-top: 12px;
    background: rgba(0,100,224,.08); color: var(--rf-blue-dark) !important;
    border-radius: var(--rf-radius-pill);
    padding: 8px 18px; font-size: 13px; font-weight: 700;
    transition: all .16s ease;
}
.rs-firm-page .rs-firm-view-profile:hover { background: var(--rf-grad); color: #fff !important; }

/* ======================= LOCATIONS ======================= */
.rs-firm-page .rs-firm-map-card {
    border-radius: var(--rf-radius);
    overflow: hidden;
    border: 1px solid var(--rf-line);
    box-shadow: var(--rf-shadow);
    margin-bottom: 16px;
}
.rs-firm-page .rs-firm-map-card-footer { padding: 14px 18px; color: var(--rf-text); font-size: 13.5px; font-weight: 600; }
.rs-firm-page .rs-firm-map-card-footer i { color: var(--rf-blue); }
.rs-firm-page .rs-directions-link { color: var(--rf-blue) !important; font-weight: 700; }
.rs-firm-page .rs-firm-location-list a {
    border: 1px solid var(--rf-line);
    border-radius: var(--rf-radius-sm);
    padding: 13px 15px;
    transition: all .16s ease;
    color: var(--rf-text) !important;
    font-weight: 600;
}
.rs-firm-page .rs-firm-location-list a:hover { border-color: var(--rf-blue); background: rgba(0,100,224,.04); transform: translateX(3px); }
.rs-firm-page .rs-firm-location-list .loc-icon { color: var(--rf-blue); }

/* ======================= SIMILAR FIRMS ======================= */
.rs-firm-page .rs-similar-card {
    background: #fff;
    border: 1px solid var(--rf-line);
    border-radius: var(--rf-radius);
    box-shadow: var(--rf-shadow);
    padding: 22px 18px;
    transition: transform .2s ease, box-shadow .2s ease;
}
.rs-firm-page .rs-similar-card:hover { transform: translateY(-4px); box-shadow: var(--rf-shadow-lg); }
.rs-firm-page .rs-similar-avatar {
    background: var(--rf-grad); color: #fff; font-weight: 800;
    box-shadow: var(--rf-shadow-blue);
}
.rs-firm-page .rs-similar-card h4 { color: var(--rf-ink); font-weight: 700; }
.rs-firm-page .rs-similar-rating span { color: var(--rf-mid); font-weight: 600; }

/* ======================= SIDEBAR ======================= */
.rs-firm-page .rs-firm-sidebar-cta {
    background:
        radial-gradient(500px 180px at 100% 0%, rgba(255,255,255,.14), transparent 60%),
        linear-gradient(160deg, #0143B5 0%, #0A1B33 100%);
    border: none;
    border-radius: var(--rf-radius);
    box-shadow: var(--rf-shadow-lg);
    padding: 26px 24px;
    color: #fff;
    position: sticky; top: 78px;
    overflow: hidden;
}
.rs-firm-page .rs-sidebar-eyebrow { color: #6FE0AE; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; font-size: 11px; }
.rs-firm-page .rs-firm-sidebar-cta h3 { color: #fff; font-size: 19px; font-weight: 800; margin: 8px 0; letter-spacing: -.01em; }
.rs-firm-page .rs-firm-sidebar-cta p { color: rgba(255,255,255,.8); font-size: 13.5px; line-height: 1.6; }
.rs-firm-page .rs-firm-sidebar-cta ul li { color: rgba(255,255,255,.92); font-size: 13px; }
.rs-firm-page .rs-firm-sidebar-cta ul li i { color: #6FE0AE; }
.rs-firm-page .rs-btn-red {
    background: linear-gradient(135deg, #FF5470 0%, #E41E3F 100%);
    color: #fff !important;
    border-radius: var(--rf-radius-pill);
    font-weight: 800; font-size: 14px;
    padding: 13px 22px;
    box-shadow: 0 12px 26px -10px rgba(228,30,63,.65);
    border: none;
    transition: transform .16s ease, box-shadow .16s ease;
}
.rs-firm-page .rs-btn-red:hover { transform: translateY(-2px); box-shadow: 0 16px 30px -8px rgba(228,30,63,.7); }

/* Activity metrics */
.rs-firm-page .rs-metric-icon {
    background: rgba(0,100,224,.1);
    color: var(--rf-blue);
    border-radius: 10px;
}
.rs-firm-page .rs-metric-text { color: var(--rf-text); font-size: 13px; }
.rs-firm-page .rs-metric-text strong { color: var(--rf-ink); }

/* Criteria rows */
.rs-firm-page .rs-criteria-row { padding: 9px 0; border-bottom: 1px solid var(--rf-line-soft); }
.rs-firm-page .rs-criteria-row:last-child { border-bottom: none; }
.rs-firm-page .rs-criteria-label { color: var(--rf-text); font-weight: 600; font-size: 13px; }
.rs-firm-page .rs-criteria-value { color: var(--rf-ink); font-weight: 800; }

/* Opening hours */
.rs-firm-page .rs-firm-hours-table td { color: var(--rf-text); font-size: 13.5px; padding: 8px 0; border-bottom: 1px solid var(--rf-line-soft); }
.rs-firm-page .rs-firm-hours-today { background: rgba(0,100,224,.05); }
.rs-firm-page .rs-firm-hours-today td { font-weight: 700; color: var(--rf-ink); }
.rs-firm-page .rs-firm-open-badge { color: var(--rf-emerald-d); font-weight: 700; }
.rs-firm-page .rs-hours-disclaimer { color: var(--rf-muted); font-size: 12px; }

/* Contact list */
.rs-firm-page .rs-firm-contact-list li { padding: 10px 0; border-bottom: 1px solid var(--rf-line-soft); color: var(--rf-text); font-size: 13.5px; }
.rs-firm-page .rs-firm-contact-list li:last-child { border-bottom: none; }
.rs-firm-page .rs-firm-contact-list i { color: var(--rf-blue); }
.rs-firm-page .rs-firm-contact-list a { color: var(--rf-blue-dark) !important; font-weight: 600; }

/* Generic green / soft / inline buttons */
.rs-firm-page .rs-btn-green {
    background: var(--rf-grad-emerald);
    color: #fff !important;
    border-radius: var(--rf-radius-pill);
    font-weight: 800;
    box-shadow: 0 10px 22px -8px rgba(0,168,98,.5);
    border: none;
    transition: transform .16s ease;
}
.rs-firm-page .rs-btn-green:hover { transform: translateY(-2px); }
.rs-firm-page .rs-btn-soft {
    background: #fff;
    color: var(--rf-blue-dark) !important;
    border: 1.5px solid rgba(255,255,255,.5);
    border-radius: var(--rf-radius-pill);
    font-weight: 700;
    transition: all .16s ease;
}
.rs-firm-page .rs-firm-suitability-card .rs-btn-soft { background: rgba(255,255,255,.14); color: #fff !important; border-color: rgba(255,255,255,.3); }
.rs-firm-page .rs-firm-suitability-card .rs-btn-soft:hover { background: rgba(255,255,255,.24); }
.rs-firm-page .rs-firm-suitability-card .rs-btn-green { background: #fff; color: var(--rf-blue-dark) !important; box-shadow: var(--rf-shadow); }

/* Empty states */
.rs-firm-page .rs-firm-empty-state { text-align: center; }
.rs-firm-page .rs-firm-empty-text { color: var(--rf-mid); }

/* Floating mobile FAB */
.rs-firm-page .rs-fab-review {
    background: var(--rf-grad);
    color: #fff !important;
    border-radius: var(--rf-radius-pill);
    box-shadow: var(--rf-shadow-blue);
    font-weight: 700;
}

/* ======================= ANIMATIONS ======================= */
@keyframes rf-grow {
    from { transform: scaleX(0); }
    to   { transform: scaleX(1); }
}
@media (prefers-reduced-motion: reduce) {
    .rs-firm-page .rs-firm-bar-fill,
    .rs-firm-page .rs-bar-fill { animation: none; }
    .rs-firm-page * { transition: none !important; }
}

/* ======================= RESPONSIVE ======================= */
@media (max-width: 900px) {
    .rs-firm-page .rs-firm-decision-strip { flex-wrap: wrap; }
    .rs-firm-page .rs-firm-decision-item {
        flex: 1 1 45%;
        border-right: 1px solid var(--rf-line-soft) !important;
        border-bottom: 1px solid var(--rf-line-soft) !important;
    }
}
@media (max-width: 768px) {
    .rs-firm-page .rs-firm-info-text h1 { font-size: 25px; }
    .rs-firm-page .rs-firm-card { padding: 20px; border-radius: 16px; }
    .rs-firm-page .rs-firm-rating-grid { padding: 20px; gap: 24px; }
    .rs-firm-page .rs-firm-suitability-card { padding: 22px; }
    .rs-firm-page .rs-firm-sidebar-cta { position: static; }
    .rs-firm-page .rs-firm-section-title { font-size: 20px; }
}
@media (max-width: 600px) {
    .rs-firm-page .rs-firm-decision-item { flex: 1 1 100%; border-right: none !important; }
    .rs-firm-page .rs-firm-header-actions { width: 100%; }
    .rs-firm-page .rs-firm-header-actions a { flex: 1; justify-content: center; }
}

/* =================================================================
   v1.0.1 PATCH — fixes for issues spotted on first render.
   Appended last so these win by source order. Each fix is paired
   with the exact base rule it corrects.
   ================================================================= */

/* (1) Header "5.0" rating number.
   Base (firm-profile.css:3364) renders .rating-num as a dark filled
   pill (background:var(--rs-text); color:white). The redesign had set
   dark text on it → invisible "5.0" = solid black box.
   Restyle as a compact blue gradient chip. */
.rs-firm-page .rs-firm-header-rating .rating-num {
    min-width: 0;
    height: auto;
    padding: 3px 10px;
    border-radius: 9px;
    background: var(--rf-grad);
    color: #fff !important;
    font-size: 15px;
    font-weight: 800;
    line-height: 1.35;
    display: inline-flex;
    align-items: center;
    box-shadow: var(--rf-shadow-blue);
}

/* (2) Suitability card sits on a dark navy gradient.
   clean-design.css has `h2 { color: var(--rs-text) !important }` which
   beat the redesign's plain color — so the heading rendered dark on dark.
   Force light text with !important (higher specificity than bare h2). */
.rs-firm-page .rs-firm-suitability-card h2 { color: #fff !important; }
.rs-firm-page .rs-firm-suitability-card p  { color: rgba(255,255,255,.85) !important; }
.rs-firm-page .rs-firm-suitability-card .rs-eyebrow {
    color: #073B2A !important;
    background: #6FE0AE;
}

/* (3) Sidebar CTA is also dark navy — force light text (bulletproof
   against the same global h3/!important rules). */
.rs-firm-page .rs-firm-sidebar-cta h3 { color: #fff !important; }
.rs-firm-page .rs-firm-sidebar-cta p,
.rs-firm-page .rs-firm-sidebar-cta ul li { color: rgba(255,255,255,.9) !important; }
.rs-firm-page .rs-firm-sidebar-cta .rs-sidebar-eyebrow {
    color: #073B2A !important;
    background: #6FE0AE;
}

/* (4) Circle badge icons.
   Base sets the <i> to green (var(--rs-star)); the redesign made the
   circle backgrounds blue/green gradients → green-on-green/blue, hard
   to see. Force white icons. */
.rs-firm-page .rs-firm-circle-icon i { color: #fff !important; }

/* (5) Rating breakdown rows showed "100%0" — base packs the percentage
   (32px) right up against a redundant raw-count column (20px). The count
   duplicates the bar, so hide it and give the percentage room. */
.rs-firm-page .rs-firm-bar-row { gap: 12px; }
.rs-firm-page .rs-firm-bar-pct { width: 46px; text-align: right; }
.rs-firm-page .rs-firm-bar-count { display: none; }

/* (6) Sidebar CTA overlap.
   The base already makes the whole .rs-firm-sidebar position:sticky.
   The redesign ALSO made the CTA sticky → it detached and floated over
   the Opening Hours / Contact cards on scroll. Keep it in normal flow. */
.rs-firm-page .rs-firm-sidebar-cta { position: static; top: auto; }

/* (7) Similar-firm cards with no site reviews now print "No reviews yet"
   (template) instead of "0.0 ()". Style it muted. */
.rs-firm-page .rs-similar-noreviews { color: var(--rf-muted); font-size: 12.5px; font-weight: 600; }

/* =================================================================
   v1.0.2 PATCH — redesign polish from the QA pass.
   ================================================================= */

/* (8) The base CSS makes the WHOLE .rs-firm-sidebar position:sticky. With its
   stack of cards (CTA + activity + ratings + hours + contact) it is taller than
   the viewport, so sticking it clips the lower cards. Let the sidebar scroll
   naturally with the page (the CTA was already un-stuck in v1.0.1). */
.rs-firm-page .rs-firm-sidebar { position: static !important; top: auto !important; }

/* (9) The "at a glance" decision strip is display:grid in the base, so the
   refresh's flex assumptions (flex:1 + the 900px flex-wrap rule) never took
   effect. Own the grid explicitly with proper responsive columns. */
.rs-firm-page .rs-firm-decision-strip {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
}
@media (max-width: 900px) {
    .rs-firm-page .rs-firm-decision-strip { grid-template-columns: repeat(2, 1fr); }
    .rs-firm-page .rs-firm-decision-item {
        flex: none;
        border-right: 1px solid var(--rf-line-soft) !important;
        border-bottom: 1px solid var(--rf-line-soft) !important;
    }
}
@media (max-width: 600px) {
    .rs-firm-page .rs-firm-decision-strip { grid-template-columns: 1fr; }
    .rs-firm-page .rs-firm-decision-item { border-right: none !important; }
}

/* (10) The sticky tab bar uses a translucent background + backdrop-filter. On
   browsers without backdrop-filter support, dark page content scrolling behind
   it washes out the tab text. Provide a solid fallback first. */
.rs-firm-page .rs-firm-tab-bar { background: #fff; }
@supports ((-webkit-backdrop-filter: blur(12px)) or (backdrop-filter: blur(12px))) {
    .rs-firm-page .rs-firm-tab-bar { background: rgba(255,255,255,.82); }
}

/* (11) Explicit hover for the red CTA inside the dark sidebar card, so it does
   not depend on base-CSS rule ordering. */
.rs-firm-page .rs-firm-sidebar-cta .rs-btn-red:hover {
    background: linear-gradient(135deg, #FF6781 0%, #C8112F 100%);
    transform: translateY(-2px);
    box-shadow: 0 16px 30px -8px rgba(228,30,63,.7);
}

/* (12) Keep the fixed mobile "Write a Review" FAB from overlapping the last
   sidebar/contact content. */
@media (max-width: 768px) {
    .rs-firm-page .rs-firm-content { padding-bottom: 96px; }
}

/* =================================================================
   v1.0.3 PATCH — even vertical rhythm in the header info column.
   The stack — name / badges / summary / site-rating / Google badge /
   meta chips / claim link — had uneven gaps because base + refresh
   margins collapse differently (e.g. rating→Google was only ~6px).
   Make it a flex column with ONE consistent gap and zero the
   children's own vertical margins. The Google badge is a direct
   child, so it spaces automatically.
   ================================================================= */
.rs-firm-page .rs-firm-info-text {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
}
.rs-firm-page .rs-firm-info-text > * {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

/* =================================================================
   v1.0.5 PATCH — header horizontal spacing. REPLACES v1.0.4, which
   capped the text column + offset the buttons and made the action
   buttons CLIP ("Request a callbac…") at narrower window widths.
   This version is overflow-safe.
   ================================================================= */
/* The header clips its decorative glow with overflow:hidden, so nothing in the
   row may ever overflow. Guarantee that: buttons keep full width and never
   shrink; the text column absorbs any shrink (its content wraps). */
.rs-firm-page .rs-firm-header-actions { flex-shrink: 0; }
.rs-firm-page .rs-firm-info-text { min-width: 0; }

@media (min-width: 901px) {
    /* Logo a touch closer to the firm name (was 26px) — width-reducing only,
       so it cannot cause overflow. Buttons stay right-aligned (base layout). */
    .rs-firm-page .rs-firm-info-row { gap: 20px; }
}
