/* Public adapters for the shared design-core control contract. */
:root { --ld-focus-color: var(--gray-600); }
input, textarea, select, button { font-family: inherit; }
.nav-cta { background: var(--primary-btn) !important; color: #fff !important; min-height: var(--ld-control-height) !important; display: inline-flex; align-items: center; }
.nav-search-input, .nav-search-btn, .blog-search-input,
.form-group input:not(.toggle-input):not([type=checkbox]):not([type=radio]),
.form-group select, .custom-select-trigger, .salary-input, .salary-filter-btn {
  min-height: var(--ld-control-height);
}
.form-group input:not(.toggle-input):not([type=checkbox]):not([type=radio]),
.form-group select, .form-group textarea, .custom-select-trigger,
.salary-input, .blog-search-input { border-radius: var(--ld-radius-control); }
:is(input, textarea, select, button, a, [role=button]):focus-visible {
  outline: 2px solid var(--gray-600) !important;
  outline-offset: 2px;
}
/* Text fields use one border rather than stacking an outline and a glow.
   Keep a visible focus boundary for keyboard and pointer editing alike. */
:is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=button]):not([type=submit]):not([type=reset]), textarea, select):focus {
  outline: none !important;
  border-color: var(--public-field-focus, var(--gray-600)) !important;
  box-shadow: none !important;
}
.has-error, [aria-invalid=true] { --public-field-focus: var(--error); }
.custom-select-trigger:focus-visible { box-shadow: none !important; }
.hero-search-field:focus-within, .region-multiselect:focus-within,
.city-multiselect:focus-within {
  border-color: var(--gray-600) !important;
  box-shadow: none !important;
}
/* The header search is one control, including its search button. */
.nav-search {
  border-radius: var(--ld-radius-control);
  background: var(--bg-card, #fff);
  box-shadow: 0 0 0 1px var(--gray-300);
}
.nav-search:focus-within { box-shadow: 0 0 0 1px var(--gray-600); }
.nav-search .nav-search-input, .nav-search .nav-search-btn {
  border: 0 !important;
  background: transparent;
}
.nav-search .nav-search-input:focus { box-shadow: none !important; }
.vacancy-detail-fav, .vacancy-detail-compare, .blog-share-btn, .share-widget__btn {
  min-width: var(--ld-target-touch); min-height: var(--ld-target-touch);
}
.blog-card[data-cat="Зарплаты"] .blog-card-category { color: #047857; }
.blog-card[data-cat="Инструкции"] .blog-card-category { color: #92400e; }
.blog-card[data-cat="Советы"] .blog-card-category { color: #1d4ed8; }
.blog-card[data-cat="Законы"] .blog-card-category { color: #b91c1c; }
.blog-card[data-cat="Карьера"] .blog-card-category { color: #6d28d9; }
.blog-card[data-cat="Документы"] .blog-card-category { color: #9a3412; }
.blog-card[data-cat="Аналитика"] .blog-card-category { color: #0e7490; }
.dark .blog-card[data-cat] .blog-card-category { color: var(--text-primary); }
.vacancy-compose-badge { color: var(--primary-dark); }
.vacancy-compose .vacancy-guest-note { color: var(--text-primary); }
@media (max-width: 600px) {
  html { font-size: 16px; }
  input:not([type=checkbox]):not([type=radio]):not([type=range]), textarea, select,
  .custom-select-trigger, .home-main .hero-search-control input,
  .home-main .vacancy-search-input { font-size: 16px !important; }
  .vacancy-detail-title { min-width: 0; overflow-wrap: anywhere; }
}

/* Header controls share an exact border-box height; focus never shifts links. */
.nav-search-input, .nav-search-btn, .nav-login, .nav-cta {
  box-sizing: border-box;
  height: var(--ld-control-height);
}
.nav-cta { padding: 0 16px !important; }
.nav-login { min-height: var(--ld-control-height); padding: 0 12px !important; display: inline-flex; align-items: center; }
.nav-search-input { padding-block: 0; }
.nav-search-input:focus { width: 140px; }
.nav-search-btn { min-width: var(--ld-target-touch); padding: 0; justify-content: center; }
.nav-links > a, .nav-dropdown-toggle { min-height: var(--ld-target-touch); display: inline-flex; align-items: center; box-sizing: border-box; }
@media (min-width: 1100px) and (max-width: 1240px) {
  .nav-links > a:not(.nav-login):not(.nav-cta), .nav-dropdown-toggle { padding-inline: 8px; }
  .nav-search-input, .nav-search-input:focus { width: 120px; }
}
.nav-theme-toggle { width: var(--ld-target-touch); height: var(--ld-target-touch); }
