:root {
  --oneup-primary: #6f42c1;
  --oneup-primary-dark: #4d2c91;
  --oneup-accent: #8d6cf2;
  --oneup-panel: #f4f0ff;
  --oneup-hero: #eee8ff;
  --oneup-text: #151420;
  --oneup-muted: #737b8c;
}

html { scroll-behavior: smooth; }
body { color: var(--oneup-text); font-family: "Open Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
a { color: var(--oneup-primary); }
.btn-primary { --bs-btn-bg: var(--oneup-primary); --bs-btn-border-color: var(--oneup-primary); --bs-btn-hover-bg: var(--oneup-primary-dark); --bs-btn-hover-border-color: var(--oneup-primary-dark); }
.text-primary { color: var(--oneup-primary) !important; }
.navbar-brand img { height: 42px; object-fit: contain; width: auto; }
.navbar .nav-link { color: #34313d; }
.navbar .nav-link.active, .navbar .nav-link:hover { color: var(--oneup-primary); }
.skip-link { background: #fff; left: 1rem; padding: .75rem 1rem; position: fixed; top: 1rem; z-index: 1100; }

.vacancies-page { min-height: 70vh; padding-top: 8rem !important; }
.filters-panel { background: var(--oneup-panel); border: 1px solid #e5e9f1; border-radius: 1rem; padding: 1.5rem; position: sticky; top: 88px; }
.filters-panel .input-group-text, .filters-panel .form-control { border-color: #e3e6ed; min-height: 52px; }
.filters-panel .form-check { margin-bottom: .6rem; }
.filters-panel .form-check-input:checked { background-color: var(--oneup-primary); border-color: var(--oneup-primary); }
.filters-panel .form-range::-webkit-slider-thumb { background: var(--oneup-primary); }
.filters-panel .form-range::-moz-range-thumb { background: var(--oneup-primary); }
.industry-list { max-height: 250px; overflow: auto; }
.sort-form .form-select { min-width: 170px; }
.empty-state { background: var(--oneup-panel); }
#vacancyResults { scroll-margin-top: 90px; transition: opacity .18s ease; }
#vacancyResults.is-loading { cursor: progress; opacity: .5; pointer-events: none; }

.vacancy-card { border: 1px solid #e6e9ef !important; border-radius: .9rem; min-height: 150px; transition: transform .18s ease, box-shadow .18s ease; }
.vacancy-card:hover { box-shadow: 0 .75rem 2rem rgba(36, 26, 58, .1) !important; transform: translateY(-2px); }
.vacancy-card h2 a { color: var(--oneup-primary); }
.min-w-0 { min-width: 0; }
.company-logo { align-items: center; background: #fff; display: flex; height: 58px; justify-content: center; overflow: hidden; width: 68px; }
.company-logo img { max-height: 54px; max-width: 64px; object-fit: contain; }
.company-logo span { align-items: center; background: #f0e6ff; border-radius: .7rem; color: var(--oneup-primary); display: flex; font-weight: 800; height: 100%; justify-content: center; width: 100%; }
.company-logo--large { height: 76px; width: 88px; }
.company-logo--large img { max-height: 72px; max-width: 84px; }
.vacancy-badge { background: #ead8ff; color: var(--oneup-primary); font-size: .78rem; font-weight: 500; padding: .45rem 1rem; }
.vacancy-badge--industry { background: #e2efff; color: #1257a6; }
.vacancy-badge--plain { background: #fff; color: #343643; }
.pagination { --bs-pagination-color: var(--oneup-primary); --bs-pagination-active-bg: var(--oneup-primary); --bs-pagination-active-border-color: var(--oneup-primary); }

.vacancy-detail { padding-top: 69px; }
.detail-hero { background: var(--oneup-hero); }
.vacancy-detail .row > * { min-width: 0; }
.detail-hero h1, .detail-copy h2, .vacancy-detail > section > h2 { color: var(--oneup-primary); }
.detail-hero h1 { overflow-wrap: anywhere; }
.detail-hero .btn { max-width: 100%; white-space: normal; }
.detail-copy { color: var(--oneup-muted); font-size: 1rem; line-height: 1.75; }
.detail-copy p, .detail-copy li { overflow-wrap: anywhere; }
.detail-copy h2 { font-size: clamp(1.8rem, 3vw, 2.45rem); font-weight: 500; margin-bottom: 1.25rem; }
.detail-copy li { margin-bottom: .35rem; }
.detail-panel { background: var(--oneup-panel); }
.detail-panel h2 { color: var(--oneup-primary); }
.detail-fact__icon { align-items: center; background: #fff; border-radius: 50%; color: var(--oneup-primary); display: flex; flex: 0 0 48px; font-size: 1.25rem; height: 48px; justify-content: center; }
.map-frame { border: 0; height: 280px; width: 100%; }

.content-page { padding-top: 69px; }
.content-page .container { padding-bottom: 4.5rem; padding-top: 3.5rem; }
.content-copy { color: var(--oneup-text); line-height: 1.75; }
.content-copy p, .content-copy li { overflow-wrap: anywhere; }
.content-copy h1 { color: var(--oneup-primary); font-weight: 700; margin-bottom: 1rem; }
.content-copy h2 { color: var(--oneup-primary); font-size: 1.5rem; font-weight: 600; margin: 2.25rem 0 .75rem; }
.content-copy h3 { font-size: 1.15rem; font-weight: 700; margin: 1.5rem 0 .5rem; }
.content-copy li { margin-bottom: .35rem; }
.content-copy hr { margin: 2.5rem 0; }
.content-copy .muted, .content-copy .meta { color: var(--oneup-muted); font-size: .9rem; }
.content-copy nav { background: var(--oneup-panel); border-radius: 1rem; margin: 1.5rem 0; padding: 1.25rem 1.5rem; }
.content-copy nav h2 { font-size: 1.1rem; margin: 0 0 .5rem; }
.content-copy nav ol { margin-bottom: 0; }
.content-copy [id] { scroll-margin-top: 90px; }

@media (max-width: 991.98px) {
  .vacancies-page { padding-top: 7rem !important; }
  .vacancy-detail { padding-top: 67px; }
  .content-page { padding-top: 67px; }
  .filters-panel { border-radius: 0; padding: 0; position: fixed; top: 0; }
  .filters-panel .offcanvas-body { background: var(--oneup-panel); padding: 1.25rem; }
  .sort-form { width: 100%; }
  .sort-form .form-select { min-width: 0; width: 50%; }
}

@media (max-width: 575.98px) {
  .vacancies-page { padding-top: 6rem !important; }
  .vacancy-card .card-body { padding: 1.15rem !important; }
  .company-logo { height: 48px; width: 52px; }
  .company-logo img { max-height: 44px; max-width: 48px; }
  .detail-hero .container { padding-left: 1.25rem; padding-right: 1.25rem; }
  .detail-hero .row { --bs-gutter-x: 0; }
  .detail-hero .vacancy-badge { max-width: 100%; white-space: normal; }
  .sort-form { flex-direction: column; }
  .sort-form .form-select { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}
