/* Opt-in presentation for the public jobs and candidate-post lists. */
.jf-listings-page #promo-banner{border-bottom:1px solid #dedede;background:#f0f0f0!important;color:#344f6a!important;box-shadow:none}
.jf-listings-page #promo-banner .promo-banner-cta{border-radius:4px;background:#e0e0e0;color:#2b5f8f}
.jf-listings-page #close-promo-banner{color:#536577!important}
.jf-listings-page .jf-public-band-inner{width:100%;max-width:1280px;margin-inline:auto;padding:0 24px}
.jf-listings-page .jf-listings-intro{margin-bottom:20px;text-align:left}
.jf-listings-page .jf-listing-count{font-size:13px}
.jf-listings-page .jf-listings-search{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;gap:12px;align-items:center;max-width:none;margin:0}
.jf-candidate-list-page .jf-listings-search{grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto auto}
.jf-listings-page .jf-listings-search .search-input-wrapper{min-width:0}
.jf-listings-page .jf-listings-search input{height:44px;min-width:0;padding:10px 40px 10px 14px!important;border:1px solid #ccc!important;border-radius:6px!important;background:#fff;font-size:16px!important;line-height:22px;box-shadow:none}
.jf-listings-page .jf-listings-search input::placeholder{font-size:14px;color:#8492a0}
.jf-listings-page .jf-listings-search .search-button{width:auto!important;height:44px;min-height:44px;padding:10px 18px!important;border:1px solid #2b5f8f!important;border-radius:6px!important;background:#2b5f8f!important;color:#fff;font-size:13px!important;font-weight:600;line-height:22px;white-space:nowrap;box-shadow:none;transform:none}
.jf-listings-page .jf-listings-search .search-button:hover{background:#234f79!important;box-shadow:none;transform:none}
.jf-listings-page .jf-listings-search .search-button .btn-text{display:inline}
.jf-listings-page .candidate-post-cta-primary-link{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:10px 14px;border:1px solid #ccc;border-radius:6px;background:#fff;color:#2b5f8f;font-size:13px;line-height:1.5;white-space:nowrap;box-shadow:none;transform:none}
.jf-listings-page .candidate-post-cta-primary-link:hover{background:#f3f3f3;border-color:#aaa;color:#234f79;transform:none}
.jf-listings-page :is(.filter-panel,.filter-sidebar){border:1px solid #dedede;border-radius:8px;background:#fff;box-shadow:none;scrollbar-width:thin;scrollbar-color:#bcbcbc transparent}
.jf-listings-page .filter-section{padding:16px 18px;border-color:#e7e7e7}
.jf-listings-page .filter-heading{color:#526b80;font-size:12px;font-weight:600;line-height:1.6;letter-spacing:.025em}
.jf-listings-page .filter-heading:focus-visible{outline:2px solid #547da5;outline-offset:3px}
.jf-listings-page .filter-note{color:#718093;font-size:11px;line-height:1.5}
.jf-listings-page .filter-input{min-height:40px;border:1px solid #d7d7d7;border-radius:5px;background:#fafafa;color:#40566d;font-size:13px;box-shadow:none}
.jf-listings-page :is(.filter-checkbox,.custom-checkbox){color:#52677e;font-size:12px;line-height:1.6}
.jf-listings-page input[type="checkbox"],.jf-listings-page input[type="radio"]{accent-color:#2b5f8f}
.jf-listings-page :is(.filter-count,.filter-badge){border-color:#ddd;background:#f1f1f1;color:#718093;box-shadow:none}
.jf-listings-page .btn-clear-filters{min-height:40px;padding:8px 12px;border:1px solid #ddd;border-radius:5px;background:#fff;color:#3e6c96;font-size:12px;box-shadow:none}
.jf-listings-page :is(.results-toolbar,.results-header){display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:16px;padding:12px 14px;border:1px solid #dedede;border-radius:8px;background:#fff;box-shadow:none;color:#526b80}
.jf-listings-page :is(.results-count-text,.results-count){color:#526b80;font-size:13px}
.jf-listings-page .jf-results-tools{display:flex;align-items:center;gap:10px;max-width:100%;min-width:0;margin-left:auto}
.jf-listings-page .sort-select{display:flex;align-items:center;gap:8px;min-width:0}
.jf-listings-page .sort-select label{color:#718093;font-size:12px}
.jf-listings-page :is(#sortBy,#sort-by){min-width:0;max-width:180px;min-height:40px;padding:8px 28px 8px 10px;border:1px solid #ccc;border-radius:5px;background:#fff;color:#40566d;font-size:13px;line-height:1.5}
.jf-listings-page .candidate-post-cta-secondary{margin-top:-4px;margin-bottom:16px;color:#718093;font-size:12px}
.jf-listings-page .candidate-post-cta-secondary-link,.jf-listings-page .candidate-quick-links a{color:#3e6c96}
/* Cards keep their content, media, boost markers and access controls. */
.jf-candidate-list-page #postsContainer{align-items:stretch;gap:18px;overflow:visible}
.jf-candidate-list-page .jf-listings-content>.max-w-7xl{max-width:1280px;padding-inline:24px}
.jf-candidate-list-page .jf-candidate-layout>.filter-panel{top:88px;max-height:calc(100dvh - 104px);align-self:start}
.jf-candidate-list-page .post-card{min-width:0;padding:18px;border:1px solid #dedede;border-radius:8px;background:#fff;background-image:none;box-shadow:none;transform:none;transition:border-color .15s;display:flex;flex-direction:column}
.jf-candidate-list-page .post-card:hover{border-color:#aab3ba;box-shadow:0 2px 7px #00000006;transform:none}
.jf-candidate-list-page .post-card.featured{border-color:#a0aab4;background:#fff;background-image:none}
.jf-candidate-list-page .post-card.featured::before{top:10px;right:10px;padding:3px 7px;border:1px solid #ccc;border-radius:4px;background:#f0f0f0;color:#526b80;font-size:10px;box-shadow:none;z-index:2}
.jf-candidate-list-page .post-card.highlighted{border-color:#8299ad;box-shadow:0 0 0 2px #dce4eb;animation:none}
.jf-candidate-list-page :is(.post-cover-placeholder,.post-cover-image){height:170px;border-radius:5px;background:#f1f1f1;background-image:none}
.jf-candidate-list-page .post-cover-placeholder{color:#96a2ad}
.jf-candidate-list-page .post-cover-placeholder i{font-size:28px;color:inherit}
.jf-candidate-list-page .post-card:hover .post-cover-image img{transform:none}
.jf-candidate-list-page .post-header{margin:0 0 12px;padding:14px 0 0;border-radius:0;background:#fff;background-image:none;gap:10px}
.jf-candidate-list-page .post-user-info{min-width:0}
.jf-candidate-list-page .post-user-info h3{margin-bottom:4px;color:#344f6a;font-size:16px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}
.jf-candidate-list-page .post-avatar{width:40px;height:40px;border:1px solid #e2e2e2;box-shadow:none}
/* No photo or anonymous post: JobsFlow logo, contained so it is not cropped. */
.jf-candidate-list-page .post-avatar--default{padding:4px;background:#fff;object-fit:contain}
.jf-candidate-list-page .post-meta{color:#718093;font-size:11px;line-height:1.6}
.jf-candidate-list-page .post-meta .icon-location{color:#F59E0B}
.jf-candidate-list-page .post-meta .icon-category{color:#00B5AD}
.jf-candidate-list-page .post-meta .icon-time{color:#3B82F6}
.jf-candidate-list-page .post-header-actions{gap:5px;flex-shrink:0}
.jf-candidate-list-page .post-header-actions button{width:30px;height:30px;border-color:#ddd;border-radius:5px;background:#fafafa;color:#718093}
.jf-candidate-list-page .post-title{color:#344f6a;font-size:17px;font-weight:600;line-height:1.45}
.jf-candidate-list-page .post-description{color:#5d6f81;font-size:14px;line-height:1.65}
.jf-candidate-list-page .post-tags{gap:5px;margin-bottom:14px}
.jf-candidate-list-page .post-tag{gap:5px;padding:3px 6px;border:1px solid #e7e7e7;border-radius:4px;background:#f5f5f5;color:#607185;font-size:11px;line-height:1.5}
/* Tag icons stay muted so the coloured meta row remains the only accent. */
.jf-candidate-list-page .post-tag i{color:#8a99a8!important}
/* Detail modal loading state: a skeleton of the datasheet layout. */
.jf-candidate-list-page .jf-detail-skeleton{padding:2px 0 6px}
.jf-candidate-list-page .jf-detail-skeleton .skeleton-line{height:12px;margin-bottom:8px;border-radius:5px}
.jf-candidate-list-page .jf-detail-skeleton__head{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.jf-candidate-list-page .jf-detail-skeleton .skeleton-avatar{width:40px;height:40px;flex-shrink:0}
.jf-candidate-list-page .jf-detail-skeleton__grow{flex:1;min-width:0}
.jf-candidate-list-page .jf-detail-skeleton .jf-sk-title{height:20px;margin-bottom:18px}
.jf-candidate-list-page .jf-detail-skeleton__row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}
.jf-candidate-list-page .jf-detail-skeleton .jf-sk-img{width:120px;height:120px;margin:0;border-radius:6px}
.jf-candidate-list-page .jf-detail-skeleton .jf-sk-pill{width:92px;height:26px;margin:0;border-radius:6px}
@media(max-width:767px){.jf-candidate-list-page .jf-detail-skeleton .jf-sk-img{width:96px;height:96px}}
@media(prefers-reduced-motion:reduce){.jf-candidate-list-page .jf-detail-skeleton :is(.skeleton-line,.skeleton-avatar){animation:none}}
/* Auto margin consumes spare card height in both SSR and AJAX grid rows. */
.jf-candidate-list-page .post-actions{margin-top:auto;flex-shrink:0;padding-top:12px;border-top:1px solid #e5e5e5}
.jf-candidate-list-page .btn-contact{min-height:44px;padding:10px 12px;border:1px solid #c7cfd5;border-radius:6px;background:#fff;background-image:none;color:#2b5f8f;font-size:13px;font-weight:600;line-height:1.5;box-shadow:none}
.jf-candidate-list-page .btn-contact:hover{border-color:#9bafc0;background:#f3f5f7;background-image:none}
.jf-candidate-list-page .contact-panel{flex-shrink:0}
.jf-candidate-list-page .contact-panel-content{border-color:#ddd;border-radius:6px;background:#f7f7f7}
.jf-candidate-list-page .image-count-badge{border:1px solid #ddd;border-radius:4px;background:#fff;color:#526b80;font-size:11px}
/* Jobs: preserve the single-column list and stretched title links. */
.jf-jobs-list-page .jf-jobs-layout{display:grid;grid-template-columns:260px minmax(0,1fr);align-items:start;gap:24px;max-width:1280px;margin:24px auto 40px;padding:0 24px}
.jf-jobs-list-page .jf-jobs-layout>.filter-sidebar{width:auto;top:88px;max-height:calc(100dvh - 104px)}
.jf-jobs-list-page .jf-jobs-content{min-width:0;max-width:none!important;padding:0!important}
.jf-jobs-list-page #main-content{max-width:none!important;padding:0!important}
.jf-jobs-list-page .job-card{min-width:0;margin-bottom:14px;padding:20px;border:1px solid #dedede;border-radius:8px;background:#fff;background-image:none;box-shadow:none;transform:none;transition:border-color .15s}
.jf-jobs-list-page .job-card:hover{border-color:#aab3ba;box-shadow:0 2px 7px #00000006;transform:none}
.jf-jobs-list-page .job-card:is(.boost-featured,.boost-priority,.boost-highlighting){border-color:#a0aab4;background:#fff;background-image:none;box-shadow:none}
/* External listings retain their dashed outline and subtle gray surface. */
.jf-jobs-list-page .job-card.job-card-aggregated{border-style:dashed;border-color:#d1d5db;background:#fafafa}
.jf-jobs-list-page .job-title{color:#344f6a;font-size:17px;font-weight:600;line-height:1.5}
.jf-jobs-list-page .job-meta-row{gap:6px 16px;margin-bottom:8px;color:#607185;font-size:13px;line-height:1.6}
/* Keep the original amber metadata icons and teal salary/result accents. */
.jf-jobs-list-page .job-description{color:#5d6f81;font-size:14px;line-height:1.65}
.jf-jobs-list-page .job-date{color:#84919f;font-size:11px}
.jf-jobs-list-page :is(.boost-badge,.employment-badge,.aggregated-badge){align-self:flex-start;padding:3px 7px;border:1px solid #ddd;border-radius:4px;background:#f3f3f3;background-image:none;color:#607185;font-size:10px;line-height:1.5;box-shadow:none}
.jf-jobs-list-page .job-card.boost-urgent::before{background:#e7e7e7;color:#526b80;box-shadow:none}
.jf-jobs-list-page .company-logo{border-color:#e1e1e1;border-radius:6px}
.jf-jobs-list-page .featured-image-container{border-radius:6px}
/* Compact in-flow mobile controls, using the existing filter dialogs. */
.jf-listings-page :is(#mobileFilterBtn,#mobile-filter-toggle){position:static;align-items:center;justify-content:center;gap:6px;width:auto;height:40px;min-height:40px;padding:8px 10px;border:1px solid #ccc;border-radius:5px;background:#fff;background-image:none;color:#2b5f8f;font-size:12px;font-weight:500;white-space:nowrap;box-shadow:none;transform:none;flex-shrink:0}
.jf-listings-page :is(#mobileFilterBtn,#mobile-filter-toggle):hover{background:#f3f3f3;box-shadow:none;transform:none}
.jf-listings-page :is(#mobileFilterCount,#mobile-filter-count){position:static;min-width:18px;width:auto;height:18px;padding:1px 4px;border:0;border-radius:4px;background:#ededed;color:#526b80;font-size:10px;line-height:16px}
.jf-listings-page :is(.mobile-filter-panel,.mobile-filter-modal){border:1px solid #ddd;border-radius:8px 8px 0 0;max-height:85dvh;box-shadow:0 -8px 25px #00000014}
.jf-listings-page :is(.mobile-filter-header,.mobile-filter-header h2,.mobile-filter-header h3){border-color:#e2e2e2;background:#fafafa;color:#344f6a;font-size:17px}
.jf-listings-page :is(#closeMobileFilter,#mobile-filter-close-x){display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:0;border-radius:5px;background:transparent;color:#607185;flex-shrink:0}
.jf-candidate-list-page #applyMobileFilters{min-height:44px;padding:10px 16px;border:1px solid #2b5f8f;border-radius:6px;background:#2b5f8f;color:#fff;font-size:13px;line-height:1.5;box-shadow:none}
.jf-listings-page #mobile-panel-job-count{border:1px solid #ddd!important;border-radius:4px!important;background:#eee!important;color:#526b80!important;font-size:12px!important}
@media(min-width:1024px){.jf-listings-page :is(#mobileFilterBtn,#mobile-filter-toggle){display:none!important}.jf-jobs-list-page .jf-jobs-layout>.filter-sidebar{display:block!important}}
@media(max-width:1023px){
 .jf-jobs-list-page .jf-jobs-layout{grid-template-columns:minmax(0,1fr);margin-top:20px}
 .jf-jobs-list-page .jf-jobs-layout>.filter-sidebar{display:none!important}
 .jf-listings-page :is(#mobileFilterBtn,#mobile-filter-toggle){display:inline-flex!important}
}
@media(max-width:767px){
 .jf-listings-page .jf-public-band-inner{padding-inline:16px}
 .jf-listings-page .jf-listings-search{grid-template-columns:minmax(0,1fr) auto;gap:10px}
 .jf-listings-page .jf-listings-search .search-input-wrapper{grid-column:1/-1}
 .jf-listings-page .jf-listings-search .search-button{justify-self:start;padding-inline:14px!important}
 .jf-listings-page .candidate-post-cta-primary-link{justify-self:end;width:auto;flex-basis:auto;padding-inline:12px;font-size:12px}
 .jf-listings-page .sort-select label{display:none}
 .jf-listings-page :is(.mobile-filter-panel,.mobile-filter-modal) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),select){min-height:44px;font-size:16px}
 .jf-listings-page .results-toolbar,.jf-listings-page .results-header{padding:10px;gap:8px}
 .jf-listings-page :is(#sortBy,#sort-by){max-width:160px;font-size:12px}
 .jf-candidate-list-page .post-card{padding:16px}
 .jf-candidate-list-page .jf-listings-content>.max-w-7xl{padding-inline:16px}
 .jf-candidate-list-page .post-title{font-size:16px}
 .jf-candidate-list-page .post-tag{padding:3px 6px;font-size:11px}
 .jf-jobs-list-page .jf-jobs-layout{padding-inline:16px;gap:16px}
 .jf-jobs-list-page .job-card{padding:16px}
 .jf-jobs-list-page .job-title{font-size:16px}
}
