:root {
    --bc-brand: #123c36;
    --bc-brand-dark: #0b2f2a;
    --bc-accent: #d4a72c;
    --bc-surface-soft: #e9f0ec;
    --bc-surface-muted: #f2f6f4;
    --bc-border: #d7e0dc;
    --bc-control-border: #c8d4cf;
    --bc-focus-border: #739589;
    --bc-focus-shadow: 0 0 0 .25rem rgba(18, 60, 54, .12);
    --bc-interactive-border: rgba(18, 60, 54, .45);
    --bc-warning-color: #493b12;
    --bc-warning-bg: #fff8df;
    --bc-warning-border: #ead383;
}

.site-chrome {
    background-color: var(--bc-brand-dark);
}

.nav-private {
    background-color: #2a1c05;
    border-top: 2px solid var(--bc-accent);
}

.nav-private-brand {
    color: var(--bc-accent);
    font-weight: 700;
}

.account-intro {
    position: relative;
    overflow: hidden;
    padding: clamp(1.5rem, 4vw, 2.5rem);
    background-color: var(--bc-surface-soft);
    background-image: repeating-linear-gradient(135deg, transparent 0 18px, rgba(18, 60, 54, .025) 18px 19px);
    border-left: .3rem solid var(--bc-accent);
    border-radius: .5rem;
}

.account-kicker {
    margin-bottom: .4rem;
    color: #8a6810;
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
}

.account-intro h1,
.account-card h2,
.account-card h3 {
    color: var(--bc-brand);
}

.account-intro p {
    max-width: 44rem;
    color: #465852;
}

.account-card {
    position: relative;
    padding: 1.35rem;
    background: var(--bs-body-bg);
    border: 1px solid var(--bc-border);
    border-radius: .5rem;
    box-shadow: 0 .3rem 1.25rem rgba(18, 60, 54, .05);
}

.account-form-section {
    overflow: visible;
}

.account-form-section > .account-card-heading {
    width: auto;
    margin: 0 0 1rem -.45rem;
    padding: .4rem .8rem .45rem .65rem;
    color: var(--bc-brand);
    background: var(--bc-surface-soft);
    border: 1px solid #cbd9d3;
    border-left: .2rem solid var(--bc-accent);
    border-radius: .3rem;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.35;
}

.account-card-heading .text-muted {
    color: #687a74 !important;
    font-size: .85rem;
}

.account-card-action,
.about-subcategory-link,
.about-card,
.about-directory-link,
.home-job {
    transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}

.account-card-action:hover,
.account-card-action:focus-within,
.about-subcategory-link:hover,
.about-subcategory-link:focus-visible,
.about-directory-link:hover,
.about-directory-link:focus-visible,
.home-job:hover,
.home-job:focus-within {
    border-color: var(--bc-interactive-border);
    transform: translateY(-2px);
}

.account-card-action:hover,
.account-card-action:focus-within {
    box-shadow: 0 .75rem 1.75rem rgba(18, 60, 54, .1);
}

.account-empty {
    padding: clamp(1.5rem, 4vw, 2.5rem);
    text-align: center;
    background: #fff;
    border: 1px dashed #aebdb7;
    border-radius: .5rem;
}

.account-badge {
    color: var(--bc-brand);
    background: #dce9e3;
    border: 1px solid #c5d8cf;
}

.account-step {
    display: grid;
    grid-template-columns: 2rem minmax(0, 1fr);
    gap: .75rem;
    align-items: start;
}

.account-step-number {
    display: grid;
    width: 2rem;
    height: 2rem;
    place-items: center;
    color: var(--bc-brand);
    background: var(--bc-surface-soft);
    border: 1px solid #c5d8cf;
    border-radius: 50%;
    font-weight: 700;
}

.about-hero {
    position: relative;
    border-left: .3rem solid var(--bc-accent);
    border-radius: .5rem;
    box-shadow: 0 .4rem 1.4rem rgba(18, 60, 54, .12);
}

.about-hero img {
    display: block;
    width: 100%;
    height: clamp(15rem, 32vw, 22rem);
    object-fit: cover;
}

.about-hero-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: flex-end;
    padding: 1.5rem;
    background: linear-gradient(to top, rgba(11, 47, 42, .88), rgba(11, 47, 42, .05) 65%);
}

.about-hero-overlay h1 {
    text-shadow: 0 1px 3px rgba(0, 0, 0, .6);
}

.about-category-copy {
    max-width: 52rem;
    padding-left: 1.25rem;
    border-left: .2rem solid var(--bc-accent);
}

.about-category-copy p:last-child {
    margin-bottom: 0;
}

.about-subcategory-grid {
    display: grid;
    gap: .75rem;
    max-width: 60rem;
}

.about-subcategory-link {
    min-height: 3.75rem;
    padding: .9rem 1rem;
    color: var(--bc-brand);
    background: #fff;
    border: 1px solid var(--bc-border);
    border-left: .2rem solid var(--bc-accent);
    border-radius: .4rem;
    box-shadow: 0 .2rem .8rem rgba(18, 60, 54, .04);
    font-weight: 700;
    text-decoration: none;
}

.about-subcategory-link:hover,
.about-subcategory-link:focus-visible {
    color: var(--bc-brand);
    box-shadow: 0 .5rem 1.2rem rgba(18, 60, 54, .1);
}

.about-card {
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--bc-border);
    border-radius: .5rem;
    box-shadow: 0 .3rem 1.25rem rgba(18, 60, 54, .06);
}

.about-card:hover,
.about-card:focus-within {
    border-color: var(--bc-interactive-border);
    box-shadow: 0 .8rem 1.8rem rgba(18, 60, 54, .13);
    transform: translateY(-4px);
}

.about-card .card-body {
    min-height: 4.5rem;
    border-left: .2rem solid var(--bc-accent);
}

.about-card h2 a,
.about-card-arrow {
    color: var(--bc-brand);
}

.about-card-media {
    aspect-ratio: 16 / 9;
    overflow: hidden;
}

.about-card-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .3s ease;
}

.about-card:hover .about-card-media img {
    transform: scale(1.05);
}

.about-card-media--empty {
    background-color: var(--bc-surface-soft) !important;
    background-image: repeating-linear-gradient(135deg, transparent 0 18px, rgba(18, 60, 54, .035) 18px 19px);
}

.about-directory-intro > div {
    max-width: 52rem;
}

.about-directory-intro p:last-child {
    margin-bottom: 0;
}

.about-directory-list {
    display: grid;
    gap: .85rem;
    max-width: 64rem;
}

.about-directory-link {
    display: block;
    padding: 1rem;
    color: var(--bs-body-color);
    background: #fff;
    border: 1px solid var(--bc-border);
    border-left: .2rem solid var(--bc-accent);
    border-radius: .45rem;
    box-shadow: 0 .25rem .9rem rgba(18, 60, 54, .045);
    text-decoration: none;
}

.about-directory-link:hover,
.about-directory-link:focus-visible {
    color: var(--bs-body-color);
    box-shadow: 0 .6rem 1.4rem rgba(18, 60, 54, .1);
}

.about-directory-link .fw-semibold,
.about-directory-arrow {
    color: var(--bc-brand);
}

.about-directory-image {
    width: 6rem;
    height: 6rem;
    object-fit: cover;
    border-radius: .35rem;
}

@media (min-width: 768px) {
    .about-subcategory-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .about-directory-image {
        width: 4.5rem;
        height: 4.5rem;
    }
}

.dashboard-card {
    min-height: 12rem;
    border-left: .2rem solid var(--bc-accent);
}

.dashboard-card-link {
    color: var(--bc-brand);
    font-weight: 700;
    text-decoration: none;
}

.dashboard-card-link:hover {
    text-decoration: underline;
    text-underline-offset: .2rem;
}

.saved-search-card h2 a {
    color: #123c36;
    text-decoration-thickness: 1px;
    text-underline-offset: .2rem;
}

.saved-search-actions {
    padding: .75rem 1rem;
    background: var(--bc-surface-muted);
    border-radius: .4rem;
}

.saved-search-card .form-check-input:checked {
    background-color: var(--bc-brand);
    border-color: var(--bc-brand);
}

.auth-layout {
    display: grid;
    gap: 1.5rem;
    align-items: stretch;
    max-width: 62rem;
    margin: clamp(1rem, 5vw, 4rem) auto;
}

.auth-card {
    padding: clamp(1.5rem, 4vw, 2.5rem);
    border-top: .25rem solid #d4a72c;
}

.sign-in-form .form-label,
.job-editor .form-label,
.organisation-editor .form-label {
    font-weight: 600;
}

.sign-in-form .form-control,
.job-editor .form-control,
.job-editor .form-select,
.organisation-editor .form-control,
.organisation-editor .form-select {
    border-color: var(--bc-control-border);
}

.sign-in-form .form-control {
    border-radius: .3rem;
}

.sign-in-form .form-control:focus,
.job-editor .form-control:focus,
.job-editor .form-select:focus,
.organisation-editor .form-control:focus,
.organisation-editor .form-select:focus {
    border-color: var(--bc-focus-border);
    box-shadow: var(--bc-focus-shadow);
}

.auth-link {
    color: var(--bc-brand);
    font-weight: 700;
}

.auth-intro {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.auth-intro h2 {
    color: var(--bc-brand);
}

.organisation-summary {
    cursor: help;
}

.organisation-summary:focus {
    outline: 3px solid rgba(18, 60, 54, .28);
    outline-offset: -3px;
}

.organisation-details {
    display: none;
}

.organisation-review:hover .organisation-details,
.organisation-review:focus-within .organisation-details {
    display: table-row;
}

.organisation-details > td {
    padding: 0 1rem 1rem;
    border-top: 0;
}

.organisation-review-panel {
    padding: 1rem;
    color: #1f2926;
    background: var(--bc-surface-muted);
    border: 1px solid var(--bc-control-border);
    border-radius: .35rem;
}

.organisation-review-heading {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: .5rem 1rem;
    margin-bottom: .85rem;
}

.organisation-review-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .8rem 1.5rem;
}

.organisation-review-grid dt {
    margin-bottom: .15rem;
    color: #52615d;
    font-size: .75rem;
    letter-spacing: 0;
    text-transform: uppercase;
}

.organisation-review-grid dd {
    margin-bottom: 0;
    overflow-wrap: anywhere;
    white-space: normal;
}

.organisation-review-logo {
    width: auto;
    max-width: 10rem;
    height: auto;
    max-height: 7.5rem;
    object-fit: contain;
    background: #fff;
    border: 1px solid var(--bc-control-border);
    border-radius: .25rem;
}

.organisation-review-wide {
    grid-column: 1 / -1;
}

#subcatRows tr.dragging {
    opacity: .5;
}

#subcatRows .drag-handle:active {
    cursor: grabbing;
}

@media (min-width: 768px) {
    .auth-layout {
        grid-template-columns: minmax(0, 1fr) minmax(0, .9fr);
    }
}

@media (max-width: 767.98px) {
    .organisation-review-grid {
        grid-template-columns: 1fr;
    }

    .organisation-review-wide {
        grid-column: auto;
    }
}

/* Underlines only appear on hover/focus, not at rest */
a {
    text-decoration: none;
}

a:hover,
a:focus-visible {
    text-decoration: underline;
    text-underline-offset: .2rem;
}

/* Keep buttons and cards styled as links free of underline entirely */
.btn:hover,
.btn:focus-visible,
.navbar-brand:hover,
.navbar-brand:focus-visible,
.nav-link:hover,
.nav-link:focus-visible,
.account-card-action:hover,
.account-card-action:focus-visible,
.about-subcategory-link:hover,
.about-subcategory-link:focus-visible,
.about-directory-link:hover,
.about-directory-link:focus-visible,
.dashboard-card-link:hover,
.dashboard-card-link:focus-visible {
    text-decoration: none;
}

.saved-search-intro {
    max-width: 36rem;
}

.organisation-intro-copy {
    max-width: 38rem;
}

.honeypot {
    display: none;
}

.category-image-cell {
    width: 64px;
}

.category-list-image {
    object-fit: cover;
    border-radius: .375rem;
}

.admin-sort-order {
    max-width: 140px;
}

.admin-image-preview {
    max-width: 160px;
    height: auto;
    border-radius: .375rem;
}

.email-preview-frame {
    height: 60vh;
}

.link-status-control {
    max-width: 220px;
}

.link-title-cell {
    width: 32%;
}

.link-url-cell {
    max-width: 260px;
}

.link-status-cell {
    width: 120px;
}

.link-checked-cell {
    width: 90px;
}

.link-actions-cell {
    width: 140px;
}

.organisation-list-logo {
    width: 40px;
    height: 40px;
    object-fit: contain;
    border-radius: .25rem;
}

.drag-handle-column {
    width: 2.5rem;
}

.drag-handle {
    cursor: grab;
}

.home-hero {
    position: relative;
    overflow: hidden;
    margin-inline: calc(var(--bs-gutter-x) * -.5);
    padding: clamp(2rem, 4vw, 3.25rem) clamp(1.25rem, 5vw, 4.5rem);
    color: #fff;
    background-color: #123c36;
    background-image:
        linear-gradient(120deg, rgba(18, 60, 54, .98) 15%, rgba(22, 82, 72, .92) 100%),
        repeating-linear-gradient(135deg, transparent 0 18px, rgba(255, 255, 255, .04) 18px 19px);
}

.home-hero::after {
    position: absolute;
    right: -5rem;
    bottom: -8rem;
    width: 24rem;
    height: 24rem;
    border: 4rem solid rgba(255, 255, 255, .06);
    border-radius: 50%;
    content: '';
}

.home-hero-grid {
    position: relative;
    z-index: 1;
    display: grid;
    gap: 3rem;
    align-items: end;
    max-width: 72rem;
    margin-inline: auto;
}

.home-kicker,
.home-section-label {
    color: var(--bc-accent);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: uppercase;
}

.home-title {
    max-width: 16ch;
    font-family: Georgia, 'Times New Roman', serif;
    font-size: clamp(2.65rem, 5vw, 4.5rem);
    font-weight: 700;
    line-height: .98;
}

.home-intro {
    max-width: 42rem;
    color: rgba(255, 255, 255, .82);
    font-size: 1.1rem;
}

.home-search {
    display: grid;
    gap: .75rem;
    padding: 1rem;
    color: var(--bs-body-color);
    background: #fff;
    border-radius: .5rem;
    box-shadow: 0 1.25rem 3rem rgba(0, 0, 0, .2);
}

.home-search .form-label {
    margin-bottom: .25rem;
    font-size: .78rem;
    font-weight: 700;
}

.home-search .form-control {
    border-color: #cbd5d1;
    border-radius: .25rem;
}

.home-search .btn {
    min-height: 3rem;
    border-radius: .25rem;
}

.home-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem 1.5rem;
    font-size: .9rem;
}

.home-local-note {
    display: none;
    max-width: 18rem;
    padding-left: 1.25rem;
    border-left: 2px solid var(--bc-accent);
    color: rgba(255, 255, 255, .8);
}

.home-local-note .h4 {
    color: #fff;
}

.home-local-mark {
    display: block;
    margin-bottom: .75rem;
    color: var(--bc-accent);
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 2rem;
    font-weight: 700;
}

.home-job-list {
    display: grid;
    gap: 1rem;
}

.home-job {
    position: relative;
    display: flex;
    gap: 1rem;
    align-items: start;
    justify-content: space-between;
    min-height: 9.5rem;
    padding: 1.35rem;
    background: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: .5rem;
    box-shadow: 0 .25rem 1rem rgba(18, 60, 54, .04);
}

.home-job:hover,
.home-job:focus-within {
    box-shadow: 0 .75rem 1.75rem rgba(18, 60, 54, .1);
}

.home-job h3 a {
    color: var(--bc-brand);
    text-decoration: none;
}

.home-job h3 a:focus-visible {
    outline: 3px solid rgba(212, 167, 44, .55);
    outline-offset: 4px;
}

.home-job-org {
    color: #52635f;
    font-size: .82rem;
    font-weight: 700;
}

.home-job-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem .85rem;
    color: var(--bs-secondary-color);
    font-size: .9rem;
}

.home-job-meta span + span::before {
    content: none;
}

.home-job-meta span + span {
    padding-left: .85rem;
    border-left: 1px solid var(--bc-accent);
}

.home-job-date {
    flex: 0 0 auto;
    color: var(--bs-secondary-color);
    font-size: .85rem;
}

.home-empty {
    padding: 2rem;
    background: var(--bs-body-bg);
    border-left: 3px solid var(--bc-accent);
}

.job-filters {
    padding: 1rem;
    color: #fff;
    background-color: var(--bc-brand);
    background-image: repeating-linear-gradient(135deg, transparent 0 18px, rgba(255, 255, 255, .025) 18px 19px);
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: .5rem;
    box-shadow: 0 .75rem 1.75rem rgba(18, 60, 54, .1);
}

.job-filters legend.form-label {
    font-size: 1rem;
    line-height: 1.5;
}

.job-filters .form-control,
.job-filters .form-select,
.job-filters .input-group-text {
    border-color: rgba(11, 47, 42, .25);
}

.job-filters .btn-outline-secondary {
    --bs-btn-color: rgba(255, 255, 255, .9);
    --bs-btn-border-color: rgba(255, 255, 255, .55);
    --bs-btn-hover-color: #0b2f2a;
    --bs-btn-hover-bg: #fff;
    --bs-btn-hover-border-color: #fff;
    --bs-btn-active-color: #0b2f2a;
    --bs-btn-active-bg: #fff;
    --bs-btn-active-border-color: #fff;
}

.job-filters .btn-outline-primary {
    --bs-btn-color: #e8c45d;
    --bs-btn-border-color: var(--bc-accent);
    --bs-btn-hover-color: #182421;
    --bs-btn-hover-bg: var(--bc-accent);
    --bs-btn-hover-border-color: var(--bc-accent);
    --bs-btn-active-color: #182421;
    --bs-btn-active-bg: var(--bc-accent);
    --bs-btn-active-border-color: var(--bc-accent);
}

.job-filters .btn-warning {
    --bs-btn-bg: var(--bc-accent);
    --bs-btn-border-color: var(--bc-accent);
    --bs-btn-hover-bg: #e0b63e;
    --bs-btn-hover-border-color: #e0b63e;
    --bs-btn-color: #182421;
}

.filter-options .btn {
    padding-inline: .45rem;
    font-size: .8rem;
}

.keyword-pill {
    padding: .4rem .65rem;
    color: #182421 !important;
    background-color: var(--bc-accent) !important;
    font-size: .75rem;
    font-weight: 500;
}

.keyword-pill:hover,
.keyword-pill:focus-visible {
    background-color: var(--bs-danger) !important;
}

@media (min-width: 768px) {
    .home-hero {
        margin-inline: 0;
    }

    .home-search {
        grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto;
    }

    .home-job-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 992px) {
    .home-hero-grid {
        grid-template-columns: minmax(0, 1fr) 18rem;
    }

    .home-local-note {
        display: block;
    }

    .job-filters {
        position: sticky;
        top: 1rem;
    }
}

.organisation-rules .alert-info,
.organisation-notice,
.job-editor-rules .alert-info,
.organisation-job-notice,
.organisation-job-rules .alert-info,
.organisation-verification {
    color: var(--bc-warning-color);
    background: var(--bc-warning-bg);
    border-color: var(--bc-warning-border);
}

.organisation-rules .alert-info,
.job-editor-rules .alert-info,
.organisation-job-rules .alert-info {
    margin-bottom: 0;
}

.organisation-rules .alert-info {
    padding: 1.35rem;
    border-radius: .5rem;
}

.organisation-rules .alert-info h2,
.job-editor-rules .alert-info h2,
.organisation-job-rules .alert-info h2 {
    color: var(--bc-warning-color);
}

.organisation-logo {
    display: grid;
    flex: 0 0 auto;
    width: 3rem;
    height: 3rem;
    object-fit: contain;
    place-items: center;
    background: var(--bc-surface-muted);
    border: 1px solid var(--bc-border);
    border-radius: .4rem;
}

.organisation-logo-placeholder {
    color: var(--bc-brand);
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 1.4rem;
    font-weight: 700;
}

.organisation-name {
    color: var(--bc-brand);
}

.job-editor-rules .alert-info {
    border-radius: .5rem;
}

.job-editor-actions,
.organisation-editor-actions {
    background: var(--bc-surface-muted);
}

.organisation-jobs-table thead th {
    padding-block: .85rem;
    color: #52635f;
    background: var(--bc-surface-muted);
    border-bottom-color: var(--bc-border);
    font-size: .75rem;
    letter-spacing: 0;
    text-transform: uppercase;
}

.organisation-jobs-table tbody td {
    padding-block: 1rem;
}

.organisation-jobs-table .job-title {
    color: var(--bc-brand);
}

.organisation-verification h2 {
    color: var(--bc-brand);
    font-weight: 600;
}

.organisation-verification {
    padding: 1.35rem;
    border: 1px solid var(--bc-warning-border);
    border-radius: .5rem;
}

@media (min-width: 992px) {
    .job-editor-sidebar,
    .organisation-editor-sidebar {
        position: sticky;
        top: 1rem;
    }
}

@media (max-width: 767.98px) {
    .organisation-jobs-panel,
    .organisation-jobs-panel .table-responsive {
        overflow: visible !important;
    }

    .organisation-jobs-panel {
        padding: 0;
        background: transparent;
        border: 0;
        box-shadow: none;
    }

    .organisation-jobs-table,
    .organisation-jobs-table tbody,
    .organisation-jobs-table tr,
    .organisation-jobs-table td {
        display: block;
        width: 100%;
    }

    .organisation-jobs-table thead {
        display: none;
    }

    .organisation-jobs-table tbody {
        display: grid;
        gap: 1rem;
    }

    .organisation-jobs-table tbody tr {
        padding: 1rem;
        background: #fff;
        border: 1px solid var(--bc-border);
        border-radius: .5rem;
        box-shadow: 0 .3rem 1.25rem rgba(18, 60, 54, .05);
    }

    .organisation-jobs-table tbody td {
        padding: .3rem 0;
        border: 0;
    }

    .organisation-jobs-table td[data-label]::before {
        display: inline-block;
        min-width: 5.75rem;
        margin-right: .5rem;
        color: #687a74;
        content: attr(data-label);
        font-size: .75rem;
        font-weight: 700;
        text-transform: uppercase;
    }

    .organisation-jobs-table .job-title {
        margin-bottom: .4rem;
        font-size: 1.05rem;
    }

    .organisation-jobs-table .job-actions {
        display: flex;
        gap: .4rem;
        margin-top: .75rem;
        padding-top: .85rem;
        border-top: 1px solid #e1e7e4;
        text-align: left !important;
    }
}