/* Job Board - the public job listings (2.2): the list page, a job's page, the apply page and the
   [job-board-jobs /] / [job-board-search /] shortcodes. Loaded on every page (inject/body.html), so every
   rule is under .jb-pub. Colours come from the site's theme tokens. */
.jb-pub { --jb-line: var(--dm-border, rgba(127, 127, 127, .3)); }
main.jb-pub { max-width: 72rem; margin: 2rem auto; padding: 0 16px; }
.jb-pub [hidden] { display: none !important; }
.jb-pub .jb-head h1 { margin: 0 0 .25rem; }
.jb-pub .jb-count { margin: 0 0 1.25rem; opacity: .8; }
.jb-pub .jb-layout { display: grid; grid-template-columns: minmax(14rem, 18rem) 1fr; gap: 2rem; align-items: start; }
@media (max-width: 760px) { .jb-pub .jb-layout { grid-template-columns: 1fr; gap: 1.25rem; } }

.jb-pub .jb-search { display: grid; gap: .75rem; padding: 1rem; border: 1px solid var(--jb-line); border-radius: 10px; background: var(--dm-surface, transparent); }
.jb-pub .jb-search-title { margin: 0; font-size: 1.15rem; }
.jb-pub .jb-field { display: grid; gap: .25rem; font-weight: 600; font-size: .9rem; }
.jb-pub .jb-field input, .jb-pub .jb-field select { width: 100%; padding: .5rem .6rem; border: 1px solid var(--jb-line); border-radius: 6px;
    font: inherit; font-weight: 400; background: transparent; color: inherit; box-sizing: border-box; }
.jb-pub .jb-search-actions { display: flex; gap: .75rem; align-items: center; }
.jb-shortcode .jb-search { grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); align-items: end; }
.jb-shortcode .jb-search-title, .jb-shortcode .jb-field-q { grid-column: 1 / -1; }

.jb-pub .jb-job-list { list-style: none; margin: 0; padding: 0; display: grid; gap: .75rem; }
.jb-pub .jb-job { border: 1px solid var(--jb-line); border-radius: 10px; padding: .9rem 1.1rem; }
.jb-pub .jb-job p { margin: .15rem 0 0; }
.jb-pub .jb-job-title { font-size: 1.1rem; font-weight: 700; text-decoration: none; }
.jb-pub .jb-job-title:hover, .jb-pub .jb-job-title:focus { text-decoration: underline; }
.jb-pub .jb-job-company { font-weight: 600; }
.jb-pub .jb-job-company:empty, .jb-pub .jb-job-posted:empty { display: none; }
.jb-pub .jb-job-posted { font-size: .85rem; opacity: .75; }
.jb-pub .jb-empty { padding: 1rem 0; }
.jb-pub .jb-pager { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-top: 1.25rem; }
.jb-pub .jb-more { margin-top: .75rem; }

.jb-pub .jb-back { margin: 0 0 1rem; }
.jb-pub .jb-job-page { max-width: 48rem; }
.jb-pub .jb-job-page h1 { margin: 0 0 .35rem; }
.jb-pub .jb-job-page header .jb-job-company { font-size: 1.1rem; margin: 0; }
.jb-pub .jb-job-page header .jb-job-facts { margin: .25rem 0 0; opacity: .85; }
.jb-pub .jb-apply-row { margin: 1.25rem 0; }
.jb-pub .jb-facts { display: grid; grid-template-columns: max-content 1fr; gap: .4rem 1.25rem; margin: 1rem 0 1.5rem;
    padding: 1rem; border: 1px solid var(--jb-line); border-radius: 10px; }
.jb-pub .jb-facts dt { font-weight: 600; }
.jb-pub .jb-facts dd { margin: 0; }
@media (max-width: 520px) { .jb-pub .jb-facts { grid-template-columns: 1fr; } .jb-pub .jb-facts dd { margin-bottom: .4rem; } }
.jb-pub .jb-apply-card { margin: 0 auto 1.5rem; }
.jb-pub .jb-apply-signup { max-width: 34rem; margin: 0 auto; }
/* Saved jobs: the Save link on a job's page. */
.jb-pub .jb-save-row { margin: .5rem 0 0; }
.jb-pub .jb-save { text-decoration: none; font-weight: 600; }

/* 2.3 - featured jobs, and company / agency pages and tiles ([job-board-companies /]). */
.jb-pub .jb-job.is-featured { border-color: var(--dm-primary, currentColor); border-width: 2px; }
.jb-pub .jb-badge-featured { display: inline-block; margin-left: .4rem; padding: .05rem .5rem; border-radius: 999px; font-size: .75rem; font-weight: 700;
    vertical-align: middle; background: var(--dm-primary, #2563eb); color: var(--dm-primary-contrast, #fff); }
.jb-pub .jb-org-page { max-width: 48rem; }
.jb-pub .jb-org-head { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }
.jb-pub .jb-org-head h1 { margin: 0; }
.jb-pub .jb-org-logo { width: 96px; height: 96px; object-fit: contain; border: 1px solid var(--jb-line); border-radius: 10px; background: #fff; }
.jb-pub .jb-org-kind { margin: .2rem 0 0; opacity: .8; }
.jb-pub .jb-org-site { margin: .2rem 0 0; overflow-wrap: anywhere; }
.jb-pub .jb-org-about, .jb-pub .jb-org-jobs { margin-top: 1.5rem; }
.jb-pub .jb-org-tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); gap: .75rem; }
.jb-pub .jb-org-tile a { display: grid; justify-items: center; gap: .4rem; padding: .9rem .6rem; border: 1px solid var(--jb-line); border-radius: 10px;
    text-align: center; text-decoration: none; height: 100%; box-sizing: border-box; }
.jb-pub .jb-org-tile a:hover, .jb-pub .jb-org-tile a:focus { text-decoration: underline; }
.jb-pub .jb-org-tile.is-featured a { border-color: var(--dm-primary, currentColor); }
.jb-pub .jb-org-tile-logo { width: 64px; height: 64px; object-fit: contain; }
.jb-pub .jb-org-tile-name { font-weight: 600; overflow-wrap: anywhere; }

/* Phase C - the Jobs / Projects tabs, a project's page and its "Send a quote" page. */
.jb-pub .jb-kinds { display: flex; gap: .25rem; flex-wrap: wrap; margin: 0 0 1rem; }
.jb-pub .jb-kinds a { padding: .3rem .8rem; border: 1px solid var(--jb-line); border-radius: 999px; text-decoration: none; }
.jb-pub .jb-kinds a.is-on { background: var(--dm-primary, #2563eb); color: var(--dm-primary-contrast, #fff); border-color: transparent; }
.jb-pub .jb-direct { font-size: .9rem; opacity: .85; }
