/*
 * Colors and type pulled from the live US Physiatry site so these
 * listings feel native rather than bolted on:
 *   navy   #003B5E  - headings, buttons
 *   cream  #F2EBE7  - page background
 *   accent #BE5500  - highlights (matches the "01/02/03" callouts)
 *   fonts  Georgia (headings) / Figtree (body)
 */
.usp-jobs {
    --usp-navy: #003B5E;
    --usp-cream: #F2EBE7;
    --usp-accent: #BE5500;
    --usp-border: #DCD2CA;
    font-family: Figtree, Georgia, sans-serif;
    color: #1a1a1a;
}

.usp-jobs__bar {
    /* above the cards that follow, so an open checkbox list is never painted
       over by them */
    position: relative;
    z-index: 1500;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
    margin-bottom: 18px;
}

.usp-jobs__filter {
    display: flex;
    align-items: flex-end;
    gap: 20px;
    flex-wrap: wrap;
    flex: 1 1 auto;
}

.usp-jobs__filter-group {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.usp-jobs__filter label {
    font-weight: 600;
    color: var(--usp-navy);
}

/* Tick-box filter (New Graduates Welcome): same height as the pill controls
   so it lines up with them on the row. */
.usp-jobs__filter-group--check {
    justify-content: flex-end;
}

.usp-jobs__filter label.usp-jobs__check {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    height: 42px;
    margin: 0;
    cursor: pointer;
}

.usp-jobs__check input[type="checkbox"] {
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    margin: 0;
    accent-color: var(--usp-navy);
    cursor: pointer;
}

.usp-jobs__check span {
    font-size: 16px;
}

.usp-jobs__filter select {
    /* Reset the theme's own select background/arrow so it can't tile
       across the full element width (seen as a repeated chevron). */
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    background-color: #fff !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23003B5E' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 14px center !important;
    background-size: 14px !important;
    font-family: inherit;
    font-size: 16px;
    width: auto;
    max-width: 280px;
    height: 42px;
    padding: 10px 40px 10px 16px;
    border: 1px solid var(--usp-border);
    border-radius: 180px;
    color: #1a1a1a;
    box-sizing: border-box;
}

/* Checkbox dropdowns (State, Opportunity Type): look like the pill selects
   above, open a list of tick-boxes. !important on the button for the same
   reason the selects have it — the theme restyles bare form controls. */
.usp-multi {
    position: relative;
}

.usp-multi__button {
    display: block !important;
    width: auto !important;
    min-width: 140px;
    max-width: 280px;
    height: 42px !important;
    margin: 0 !important;
    padding: 10px 40px 10px 16px !important;
    box-sizing: border-box !important;
    border: 1px solid var(--usp-border) !important;
    border-radius: 180px !important;
    background-color: #fff !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23003B5E' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 14px center !important;
    background-size: 14px !important;
    color: #1a1a1a !important;
    font-family: inherit !important;
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: normal !important;
    text-align: left !important;
    text-transform: none !important;
    box-shadow: none !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer !important;
}

.usp-multi.has-value .usp-multi__button {
    border-color: var(--usp-navy) !important;
}

.usp-multi__panel {
    position: absolute;
    z-index: 50;
    top: calc(100% + 6px);
    left: 0;
    min-width: 220px;
    max-width: 320px;
    max-height: 320px;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 8px;
    background: #fff;
    border: 1px solid var(--usp-border);
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
}

.usp-multi__panel[hidden] {
    display: none;
}

/* The theme gives list items, labels and checkboxes its own sizes, spacing and
   look (taller rows, hand-drawn boxes) — reset them so the list is compact
   and the boxes are real, orange-accented checkboxes. */
.usp-multi__list {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
}

.usp-multi__list li {
    margin: 0 !important;
    padding: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    line-height: 1.3 !important;
}

.usp-jobs__filter label.usp-multi__option {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    margin: 0 !important;
    padding: 7px 10px !important;
    height: auto !important;
    min-height: 0 !important;
    border-radius: 8px;
    font-size: 15px !important;
    font-weight: 400 !important;
    line-height: 1.3 !important;
    letter-spacing: normal !important;
    text-transform: none !important;
    color: #1a1a1a !important;
    cursor: pointer;
}

.usp-multi__option:hover {
    background: var(--usp-cream);
}

.usp-multi__option span {
    display: inline !important;
    margin: 0 !important;
    padding: 0 !important;
    font-size: 15px !important;
    line-height: 1.3 !important;
}

.usp-multi__option input[type="checkbox"] {
    -webkit-appearance: checkbox !important;
    appearance: auto !important;
    position: static !important;
    display: inline-block !important;
    flex: none !important;
    width: 16px !important;
    height: 16px !important;
    margin: 0 !important;
    padding: 0 !important;
    opacity: 1 !important;
    visibility: visible !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    accent-color: var(--usp-accent);
}

.usp-multi__option::before,
.usp-multi__option::after,
.usp-multi__option input::before,
.usp-multi__option input::after {
    content: none !important;
    display: none !important;
}

.usp-jobs__filter button {
    font-family: inherit;
    font-weight: 500;
    padding: 10px 20px;
    border-radius: 180px;
    border: 1px solid var(--usp-navy);
    background: var(--usp-navy);
    color: #fff;
    cursor: pointer;
}

/* "Clear filters" sits at the right of the filter row, level with the
   dropdowns. Styled like the cards' Show Details button. */
.usp-jobs__actions {
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 0 0 auto;
    margin-left: auto;
}

/* A real <button>, with !important like the other buttons: the theme restyles
   links (it turned the old "Clear filters" link white on white) and bare
   buttons alike. */
.usp-jobs__clear {
    display: inline-flex !important;
    align-items: center !important;
    height: 42px !important;
    padding: 0 18px !important;
    margin: 0 !important;
    border: 1.5px solid var(--usp-accent) !important;
    border-radius: 6px !important;
    background: #fff !important;
    color: var(--usp-accent) !important;
    font-family: inherit !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: normal !important;
    text-transform: none !important;
    text-decoration: none !important;
    box-shadow: none !important;
    cursor: pointer !important;
}

.usp-jobs__clear[hidden] {
    display: none !important;
}

.usp-jobs__clear:hover {
    background: var(--usp-accent) !important;
    color: #fff !important;
}


.usp-jobs__clear-link {
    color: var(--usp-accent) !important;
    font-size: 14px;
    text-decoration: underline !important;
}

.usp-jobs__notice {
    display: block !important;
    border-radius: 8px !important;
    padding: 16px 20px !important;
    margin: 0 0 24px !important;
    font-size: 15px !important;
    font-family: inherit !important;
}

.usp-jobs__notice--success {
    background: #e8f3ec !important;
    color: #1f5c38 !important;
    border: 1px solid #bfe0cb !important;
}

.usp-jobs__notice--error {
    background: #fbeceb !important;
    color: #8a2c25 !important;
    border: 1px solid #f0c6c2 !important;
}

.usp-jobs__empty {
    background: var(--usp-cream);
    border-radius: 8px;
    padding: 24px;
    font-size: 17px;
}

.usp-jobs__list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
}

/* Set by usp-job-listings-filter.js while an AJAX filter request is in
   flight, so picking a filter gives some visible feedback instead of
   the list just silently swapping a moment later. */
.usp-jobs__results[aria-busy="true"] {
    opacity: 0.5;
    transition: opacity 0.15s ease;
}

.usp-job-card {
    background: #fff;
    border: 1px solid var(--usp-border);
    border-top: 8px solid var(--usp-navy);
    border-radius: 12px;
    padding: 24px 28px 26px;
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
}

/* An opened card takes the full row (so its picture and facts have room).
   Two rules, not one selector list: a browser without :has() would drop a
   list containing it. is-open is set by usp-job-geomap.js / the server. */
.usp-job-card.is-open {
    grid-column: 1 / -1;
}

.usp-job-card:has(.usp-job-card__toggle[aria-expanded="true"]) {
    grid-column: 1 / -1;
}

.usp-job-card.has-image.is-open {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 36%);
    gap: 28px;
    align-items: start;
}

.usp-job-card__image {
    display: none;
}

.usp-job-card.is-open .usp-job-card__image {
    display: block;
}

.usp-job-card__image img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 7 / 4;   /* the state pictures are 700 x 400 */
    object-fit: cover;
    border-radius: 6px;
}

.usp-job-card__title {
    font-family: Georgia, serif;
    font-weight: 400;
    color: var(--usp-navy);
    font-size: 24px;
    line-height: 1.25;
    margin: 0;
}

/* Show / Hide Details + View on Map */
.usp-job-card__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid var(--usp-border);
}

/* !important: the theme styles bare <button>s with enough weight to beat
   a plain class selector. */
.usp-job-card__toggle,
.usp-job-card__mapbtn {
    font-family: inherit !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: normal !important;
    padding: 9px 18px !important;
    margin: 0 !important;
    border: 1.5px solid var(--usp-accent) !important;
    border-radius: 6px !important;
    box-shadow: none !important;
    text-transform: none !important;
    text-decoration: none !important;
    cursor: pointer !important;
}

.usp-job-card__toggle {
    background: #fff !important;
    color: var(--usp-accent) !important;
}

.usp-job-card__toggle:hover {
    background: var(--usp-accent) !important;
    color: #fff !important;
}

.usp-job-card__mapbtn {
    background: var(--usp-accent) !important;
    color: #fff !important;
}

.usp-job-card__mapbtn:hover {
    background: var(--usp-navy) !important;
    border-color: var(--usp-navy) !important;
}

.usp-job-card__mapbtn[hidden],
.usp-job-card__details-body[hidden] {
    display: none !important;
}

.usp-job-card__facts {
    list-style: none;
    margin: 0 0 12px;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 10px 24px;
}

.usp-job-card__facts li {
    display: flex;
    flex-direction: column;
    font-size: 15px;
    line-height: 1.4;
}

.usp-job-card__fact-label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6b6b6b;
}

.usp-job-card__fact-value {
    color: #1a1a1a;
    font-weight: 500;
}

.usp-job-card__highlights {
    margin: 4px 0 12px;
    padding-left: 20px;
    font-size: 15px;
    line-height: 1.5;
}

.usp-job-card__highlights li {
    margin: 0 0 4px;
}

/* Used instead of the Show Details row when a listing has nothing to show
   there — same separator/spacing, so the card looks consistent either
   way. When it holds the Gravity Forms/built-in apply toggle, that
   toggle's own top border is turned off so there's only one line, not
   two stacked. */
.usp-job-card__apply-only {
    margin-top: 16px;
    border-top: 1px solid var(--usp-border);
    padding-top: 12px;
}

.usp-job-card__apply-only .usp-job-apply-toggle {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}

/* Swap the summary label between closed/open states so it's obvious a
   toggle can be closed again, not just opened. Pure CSS, no JS. */
.usp-job-card__summary-open {
    display: none;
}

details[open] > summary .usp-job-card__summary-open {
    display: inline;
}

details[open] > summary .usp-job-card__summary-closed {
    display: none;
}

.usp-job-card__details-body {
    margin-top: 14px;
    font-size: 15px;
    line-height: 1.6;
}

.usp-job-card__apply {
    /* !important throughout: the theme applies its own default look to
       bare <button> elements with enough specificity to beat a plain
       class selector, so without this the button renders unstyled. */
    display: inline-block !important;
    margin-top: 18px !important;
    padding: 11px 22px !important;
    border-radius: 6px !important;
    border: none !important;
    background: var(--usp-accent) !important;
    color: #fff !important;
    font-family: inherit !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: normal !important;
    text-decoration: none !important;
    cursor: pointer !important;
    box-shadow: none !important;
    text-transform: none !important;
}

.usp-job-card__apply:hover {
    background: var(--usp-navy) !important;
    color: #fff !important;
}

.usp-job-apply-toggle {
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid var(--usp-border);
}

.usp-job-card__apply-summary {
    display: inline-block !important;
    padding: 11px 22px !important;
    border-radius: 6px !important;
    background: var(--usp-accent) !important;
    color: #fff !important;
    font-family: inherit !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: normal !important;
    list-style: none !important;
    cursor: pointer !important;
}

.usp-job-card__apply-summary:hover {
    background: var(--usp-navy) !important;
}

.usp-job-card__apply-summary::-webkit-details-marker {
    display: none;
}

.usp-job-card__apply-summary::marker {
    content: '';
}

.usp-job-apply-toggle__body {
    margin-top: 14px;
}

.usp-job-apply__security-note {
    font-size: 13px;
    color: #6b6b6b;
    margin: 0 0 14px;
}

.usp-job-apply__file-note {
    font-size: 13px;
    color: #6b6b6b;
    margin: -6px 0 14px;
}

.usp-job-apply__row {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.usp-job-apply__row input {
    flex: 1 1 220px;
    font-family: inherit;
    font-size: 15px;
    padding: 10px 14px;
    border: 1px solid var(--usp-border);
    border-radius: 6px;
    box-sizing: border-box;
}

.usp-job-apply__row input[type="file"] {
    padding: 8px 14px;
    background: #fff;
}

/* Gravity Forms' own footer container is a flex row, which put our
   security note and its Submit button side by side. Wrapping both in
   this div (see class-gf-integration.php) takes them out of that flex
   row so they stack normally; the styles below then match the button
   to the rest of the plugin's buttons regardless of GF's own markup
   (an <input type="submit"> in most setups, sometimes a <button>). */
.usp-gf-submit-wrap {
    display: block !important;
}

.usp-gf-submit-wrap .usp-job-apply__security-note {
    display: block !important;
    width: 100% !important;
    margin: 0 0 14px !important;
}

.usp-gf-submit-wrap input[type="submit"],
.usp-gf-submit-wrap button {
    display: inline-block !important;
    margin: 0 !important;
    padding: 11px 22px !important;
    border-radius: 6px !important;
    border: none !important;
    background: var(--usp-accent) !important;
    color: #fff !important;
    font-family: inherit !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: normal !important;
    cursor: pointer !important;
    box-shadow: none !important;
    text-transform: none !important;
}

.usp-gf-submit-wrap input[type="submit"]:hover,
.usp-gf-submit-wrap button:hover {
    background: var(--usp-navy) !important;
}

/* Honeypot: hidden from sighted users, but present in the DOM so bots
   that auto-fill every field give themselves away. !important since a
   theme rule targeting bare <div>/<label> can otherwise win and leave
   it visible. */
.usp-job-apply__hp {
    position: absolute !important;
    left: -9999px !important;
    top: -9999px !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

/* ---------- List / Map toggle ---------- */

.usp-jobs__views {
    display: inline-flex;
    margin: 0 0 18px;
    border: 1px solid var(--usp-border);
    border-radius: 180px;
    overflow: hidden;
    background: #fff;
    height: 42px;
    box-sizing: border-box;
}

.usp-jobs__views[hidden] {
    display: none;
}

/* !important: the theme styles bare <button>s with enough weight to beat
   a plain class selector. */
.usp-jobs__view-btn {
    font-family: inherit !important;
    font-size: 15px !important;
    font-weight: 500 !important;
    line-height: normal !important;
    height: 100% !important;
    padding: 0 24px !important;
    margin: 0 !important;
    border: none !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: var(--usp-navy) !important;
    box-shadow: none !important;
    text-transform: none !important;
    cursor: pointer !important;
}

.usp-jobs__view-btn.is-active {
    background: var(--usp-navy) !important;
    color: #fff !important;
}

.usp-jobs--map .usp-jobs__results {
    display: none;
}

.usp-jobs__mapnote {
    margin: 10px 0 0;
    font-size: 14px;
    color: #6b6b6b;
}

.usp-jobs__mapnote:empty {
    display: none;
}

.usp-job-card.is-highlighted {
    box-shadow: 0 0 0 3px var(--usp-accent);
    transition: box-shadow 0.3s ease;
}

/* ---------- Map (state outlines + cities, drawn by usp-job-geomap.js) ---------- */

.usp-geomap {
    position: relative;
    height: 520px;
    background: #fff;
    border: 1px solid var(--usp-border);
    border-radius: 10px;
    overflow: hidden;
}

/* The SVG is out of flow (absolute) so it can never push the column wider
   — this site's grid sizes columns with CSS tables. */
.usp-geomap__svg {
    position: absolute;
    left: 0;
    top: 0;
    display: block;
    touch-action: none;
    cursor: grab;
    user-select: none;
}

.usp-geomap__svg.is-dragging {
    cursor: grabbing;
}

.usp-geomap__land path {
    fill: #DCD2CA;
    stroke: #fff;
    stroke-width: 1;
    stroke-linejoin: round;
}

/* states that have at least one listing */
.usp-geomap__land path.has-jobs {
    fill: #C2B2A3;
}

/* Interstates (drawn under the city names and pins) */
.usp-geomap__roads {
    pointer-events: none;
}

.usp-geomap__roads path {
    fill: none;
    stroke: var(--usp-navy);
    stroke-linecap: round;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
}

.usp-geomap__roads path.is-major {
    stroke-width: 1.8;
    stroke-opacity: 0.4;
}

.usp-geomap__roads path.is-minor {
    stroke-width: 1.2;
    stroke-opacity: 0.3;
}

/* route-number shields */
.usp-geomap__shields {
    pointer-events: none;
}

.usp-geomap__shields rect {
    fill: var(--usp-navy);
    stroke: #fff;
    stroke-width: 1.5;
}

.usp-geomap__shields text {
    font-family: inherit;
    font-size: 10px;
    font-weight: 700;
    fill: #fff;
}

.usp-geomap__cities circle {
    fill: var(--usp-navy);
    opacity: 0.55;
}

.usp-geomap__cities text {
    font-family: inherit;
    font-size: 12px;
    fill: var(--usp-navy);
    paint-order: stroke;
    stroke: #fff;
    stroke-width: 3px;
    stroke-linejoin: round;
    pointer-events: none;
}

.usp-geomap__marker circle {
    fill: var(--usp-accent);
    stroke: #fff;
    stroke-width: 2.5;
}

.usp-geomap__marker .usp-geomap__marker-dot {
    fill: #fff;
    stroke: none;
}

.usp-geomap__marker text {
    font-family: inherit;
    font-size: 12px;
    font-weight: 700;
    fill: #fff;
    pointer-events: none;
}

.usp-geomap__marker .usp-geomap__pin-label {
    font-size: 13px;
    font-weight: 700;
    fill: var(--usp-navy);
    paint-order: stroke;
    stroke: #fff;
    stroke-width: 3.5px;
    stroke-linejoin: round;
}

.usp-geomap__marker {
    cursor: pointer;
}

.usp-geomap__marker:hover circle:first-child,
.usp-geomap__marker:focus-visible circle:first-child {
    fill: var(--usp-navy);
}

.usp-geomap__marker:focus {
    outline: none;
}

.usp-geomap__controls {
    position: absolute;
    top: 10px;
    right: 10px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.usp-geomap__controls button {
    width: 34px !important;
    height: 34px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 1px solid var(--usp-border) !important;
    border-radius: 50% !important;
    background: #fff !important;
    color: var(--usp-navy) !important;
    font-family: inherit !important;
    font-size: 18px !important;
    line-height: 1 !important;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12) !important;
    cursor: pointer !important;
}

.usp-geomap__controls button:hover {
    background: var(--usp-navy) !important;
    color: #fff !important;
}

.usp-geomap__hint {
    position: absolute;
    left: 50%;
    bottom: 12px;
    transform: translateX(-50%);
    padding: 6px 14px;
    border-radius: 180px;
    background: rgba(0, 59, 94, 0.88);
    color: #fff;
    font-size: 13px;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
}

.usp-geomap__hint.is-visible {
    opacity: 1;
}

.usp-geomap__popup {
    position: absolute;
    z-index: 5;
    width: 300px;
    max-width: calc(100% - 16px);
    max-height: calc(100% - 16px);
    overflow-y: auto;
    padding: 14px 16px 4px;
    background: #fff;
    border: 1px solid var(--usp-border);
    border-radius: 10px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
    text-align: left;
}

.usp-geomap__popup-close {
    position: absolute !important;
    top: 4px !important;
    right: 8px !important;
    padding: 0 !important;
    border: none !important;
    background: transparent !important;
    color: #6b6b6b !important;
    font-size: 22px !important;
    line-height: 1 !important;
    box-shadow: none !important;
    cursor: pointer !important;
}

.usp-geomap__popup-item {
    margin: 0 0 14px;
    padding-right: 14px;
}

.usp-geomap__popup-item strong {
    display: block;
    font-family: Georgia, serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 1.3;
    color: var(--usp-navy);
}

.usp-geomap__popup-item span {
    display: block;
    margin-top: 2px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--usp-accent);
}

.usp-geomap__popup-item button {
    margin: 6px 0 0 !important;
    padding: 0 !important;
    border: none !important;
    background: transparent !important;
    color: var(--usp-navy) !important;
    font-family: inherit !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    text-decoration: underline !important;
    box-shadow: none !important;
    cursor: pointer !important;
}

/* ---------- "View on Map" popup ---------- */

html.usp-modal-open {
    overflow: hidden;
}

.usp-modal {
    --usp-navy: #003B5E;
    --usp-accent: #BE5500;
    --usp-border: #DCD2CA;
    position: fixed;
    inset: 0;
    z-index: 2147483000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    font-family: Figtree, Georgia, sans-serif;
}

.usp-modal[hidden] {
    display: none;
}

.usp-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.55);
}

.usp-modal__dialog {
    position: relative;
    width: min(520px, 100%);
    max-height: 100%;
    overflow-y: auto;
    padding: 22px;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}

.usp-modal__dialog:focus {
    outline: none;
}

.usp-modal__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

.usp-modal__title {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--usp-accent);
}

.usp-modal__close {
    flex: none;
    width: 28px !important;
    height: 28px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 1.5px solid var(--usp-accent) !important;
    border-radius: 50% !important;
    background: #fff !important;
    color: var(--usp-accent) !important;
    font-family: inherit !important;
    font-size: 13px !important;
    line-height: 1 !important;
    box-shadow: none !important;
    cursor: pointer !important;
}

.usp-modal__close:hover {
    background: var(--usp-accent) !important;
    color: #fff !important;
}

.usp-geomap--modal {
    height: 340px;
}

@media (max-width: 700px) {
    .usp-jobs__list {
        grid-template-columns: minmax(0, 1fr);
    }

    .usp-job-card.has-image.is-open {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 600px) {
    .usp-geomap {
        height: 420px;
    }

    .usp-geomap--modal {
        height: 300px;
    }

    .usp-job-card {
        padding: 18px 20px 20px;
    }
}
