/* UI kit HTLPro 0.1: подключается только к содержимому; хедер и редакционные preview вне области. */
.htlpro-ui,
body:has(.htlpro-ui) :is(#authModal, #registerSuccessModal, #contactModal, .site-footer) {
  --htlpro-ink: #182c38;
  --htlpro-muted: #526b79;
  --htlpro-accent: #126b8d;
  --htlpro-accent-hover: #0c5878;
  --htlpro-accent-pressed: #084563;
  --htlpro-canvas: #f8fafb;
  --htlpro-surface: #ffffff;
  --htlpro-surface-accent: #eef6f8;
  --htlpro-selected: #e6f3f7;
  --htlpro-line: #d7e4ea;
  --htlpro-control-line: #8aa7b5;
  --htlpro-focus: #0b7797;
  --ui-primary: var(--htlpro-accent);
  --ui-primary-hover: var(--htlpro-accent-hover);
  --ui-primary-active: var(--htlpro-accent-pressed);
  --ui-link: var(--htlpro-accent);
  --ui-link-hover: var(--htlpro-accent-hover);
  --ui-text: var(--htlpro-ink);
  --ui-text-muted: var(--htlpro-muted);
  --ui-surface: var(--htlpro-surface);
  --ui-surface-muted: var(--htlpro-canvas);
  --ui-surface-accent: var(--htlpro-surface-accent);
  --ui-selected-bg: var(--htlpro-selected);
  --ui-border: var(--htlpro-line);
  --ui-control-border: var(--htlpro-control-line);
  --ui-focus: var(--htlpro-focus);
  /* Legacy names are bridged only inside the opted-in content and named shared surfaces. */
  --primary: var(--htlpro-accent);
  --primary-dark: var(--htlpro-accent-hover);
  --primary-light: var(--htlpro-surface-accent);
  --black: var(--htlpro-ink);
  --gray-dark: var(--htlpro-muted);
  --gray: var(--htlpro-line);
  --gray-light: var(--htlpro-canvas);
  --white: var(--htlpro-surface);
  --radius: 8px;
  --radius-lg: 12px;
  --radius-xl: 16px;
}

.htlpro-ui { color: var(--ui-text); background: var(--htlpro-canvas); font: 400 16px/24px var(--ui-font); }

.htlpro-ui h1:not(:where(.htlpro-widget, .htlpro-widget *)) { font-size: 40px; line-height: 48px; }
.htlpro-ui h2:not(:where(.htlpro-widget, .htlpro-widget *)) { font-size: 28px; line-height: 36px; }
.htlpro-ui h3:not(:where(.htlpro-widget, .htlpro-widget *)) { font-size: 20px; line-height: 26px; }
.htlpro-ui :is(a, button, input, select, textarea, summary):focus-visible:not(:where(.htlpro-widget, .htlpro-widget *)) {
  outline: 3px solid var(--ui-focus);
  outline-offset: 3px;
}
.htlpro-ui a:not(:where(.htlpro-widget, .htlpro-widget *)) { color: var(--ui-link); }
.htlpro-ui a:is(:hover, :focus-visible):not(:where(.htlpro-widget, .htlpro-widget *)) { text-decoration: underline; }
.htlpro-ui :is(.btn, .pms-studio-primary):is(:hover, :focus-visible) { text-decoration: none; }
.htlpro-ui .pms-tool-choice input:focus-visible { outline: 0; }
.htlpro-ui :is(button, select, .btn):not(:where(.htlpro-widget, .htlpro-widget *)) { min-width: 44px; min-height: 44px; border-radius: 8px; }
.htlpro-ui :is(button, input, select, textarea):not(:where(.htlpro-widget, .htlpro-widget *)) { font-family: inherit; }
.htlpro-ui :is(button, .btn):disabled:not(:where(.htlpro-widget, .htlpro-widget *)) { cursor: not-allowed; opacity: .5; }
.htlpro-ui :is(.btn-primary, .pms-studio-primary, [data-open-comparison]) {
  color: white;
  background: var(--ui-primary);
  border-color: var(--ui-primary);
}
.htlpro-ui :is(.btn-primary, .pms-studio-primary, [data-open-comparison]):hover:not(:disabled) {
  color: white;
  background: var(--ui-primary-hover);
  border-color: var(--ui-primary-hover);
}
.htlpro-ui :is(.btn-primary, .pms-studio-primary, [data-open-comparison]):active:not(:disabled) {
  color: white;
  background: var(--ui-primary-active);
  border-color: var(--ui-primary-active);
}
.htlpro-ui .btn-outline:not(:where(.htlpro-widget, .htlpro-widget *)) { color: var(--ui-link); border-color: var(--ui-primary); background: var(--ui-surface); }
.htlpro-ui .btn-outline:is(:hover, :focus-visible):not(:where(.htlpro-widget, .htlpro-widget *)) { color: var(--ui-link); border-color: var(--ui-primary); background: var(--ui-surface-accent); }
.htlpro-ui :is(.pms-filter-bar button, .pms-compare-summary > button, .pms-comparison-dock button:not([data-open-comparison]), .pms-draft-selected button):hover:not(:disabled) {
  background: var(--ui-surface-accent);
}
.htlpro-ui :is(.pms-tool-choice, .pms-price-product, .pms-card-rating, .pms-header-meta, .pms-review-meta) { line-height: 20px; }
.htlpro-ui :is(.pms-header-meta, .pms-review-meta, .pms-breadcrumb, .pms-reviews-sub) { color: var(--ui-text-muted); font-size: 14px; line-height: 20px; }
.htlpro-ui .pms-compare-label { min-height: 44px; }
.htlpro-ui .pms-extra-preview dt small { display: block; color: var(--ui-text-muted); font-size: 12px; line-height: 18px; }
.htlpro-ui :is(.pms-card-actions a, .pms-active-filters a) { display: inline-flex; align-items: center; min-height: 44px; }
.htlpro-ui :is(.pms-filter-bar > a, .pms-section-heading > a) { display: inline-flex; align-items: center; min-height: 44px; }
.htlpro-ui summary { min-height: 44px; }
.htlpro-ui .pms-additional-payments > summary { padding-block: 10px; }
.htlpro-ui :is(.pms-filter-dialog, .pms-studio-comparison) { border-radius: 16px; }
.htlpro-ui .pms-studio-overlay > header h2 { font-size: 24px; line-height: 30px; }
.htlpro-ui :is(.pms-studio-card, .pms-section, .pms-header, .pms-finder) { border-radius: 12px; border-color: var(--ui-border); }
.htlpro-ui .pms-studio-card { box-shadow: none; }
.htlpro-ui :is(.pms-published-offer, .pms-review-item, .pms-charge) { border-color: var(--ui-border); }
.htlpro-ui .pms-catalog-commercial { background: var(--ui-surface-accent); border-color: var(--ui-border); }
.htlpro-ui :is(.pms-header-price, .pms-review-form, .pms-feature-badge) { background: var(--ui-surface-accent); }
.htlpro-ui :is(.pms-tool-group > summary, .pms-compare-feature > h4) { background: var(--ui-surface-accent); }
.htlpro-ui :is(.pms-tool-preview > span, .s-steps li, .s-hosting-note) { background: var(--htlpro-canvas); }
.htlpro-ui .pms-studio-comparison [data-comparison-content] { background: var(--htlpro-canvas); }
.htlpro-ui :is(.pms-public-products, .s-hosting-grid, .s-steps) h3 { font-size: 20px; line-height: 26px; }
.htlpro-ui :is(.pms-description, .pms-review-text) { color: var(--ui-text); }
.htlpro-ui .pms-review-text { font-size: 16px; }
.htlpro-ui :is(.pms-description, .pms-review-text, .pms-header-summary) { line-height: 24px; }
.htlpro-ui :is(.pms-info-item-label, .pms-reviews-count, .pms-header-link) { color: var(--ui-text-muted); }
.htlpro-ui .pms-section-title i { color: var(--ui-link); }
.htlpro-ui :is(.pms-form-group input, .pms-form-group textarea) { border-color: var(--ui-control-border); border-radius: 8px; }
.htlpro-ui .pms-filter-search input { border-radius: 8px; }
.htlpro-ui :is(.pms-form-group input, .pms-form-group textarea):focus { border-color: var(--ui-focus); }
.htlpro-ui .pms-search-row [data-clear-query] { width: 44px; }
.htlpro-ui.pms-studio {
  --pms-cloud: var(--ui-primary); --pms-cloud-bg: var(--ui-surface-accent);
  --pms-local: var(--ui-primary); --pms-local-bg: var(--ui-surface-accent);
  --pms-both: var(--ui-primary); --pms-both-bg: var(--ui-surface-accent);
}

@media (max-width: 767px) {
  .htlpro-ui h1 { font-size: 28px; line-height: 34px; }
  .htlpro-ui h2 { font-size: 24px; line-height: 30px; }
  .htlpro-ui :is(.pms-filter-dialog, .pms-studio-comparison) { border-radius: 0; }
}

/* Third-party host contract: the controllers read these values at connect(). */
.htlpro-ui .htlpro-widget {
  --htlpro-ink: initial;
  --htlpro-muted: initial;
  --htlpro-accent: initial;
  --htlpro-accent-hover: initial;
  --htlpro-accent-pressed: initial;
  --htlpro-canvas: initial;
  --htlpro-surface: initial;
  --htlpro-surface-accent: initial;
  --htlpro-selected: initial;
  --htlpro-line: initial;
  --htlpro-control-line: initial;
  --htlpro-focus: initial;
  --ui-brand: #1D8FE1; --ui-primary: #177ABD; --ui-primary-hover: #1069A5;
  --ui-primary-active: #0D5688; --ui-link: #126EB0; --ui-focus: #126EB0;
  --ui-text: #192F40; --ui-text-muted: #526B7B; --ui-surface: #FFFFFF;
  --ui-surface-muted: #F5F8FC; --ui-surface-accent: #EDF5FB;
  --ui-selected-bg: #E3F0FA; --ui-border: #DCE6ED; --ui-control-border: #768B9B;
  --primary: #1D8FE1; --primary-dark: #1776BD; --primary-light: #4DA9EB;
  --black: #222222; --gray-dark: #717171; --gray: #DDDDDD; --gray-light: #F7F7F7;
  --white: #FFFFFF; --radius: 12px; --radius-lg: 16px; --radius-xl: 24px;
  color: #222222;
}

/* Shared visual states, without changing Bootstrap, form transport or layout. */
.htlpro-ui :is(input, select, textarea):not(:where([type=hidden], [type=checkbox], [type=radio], [type=range], [type=file])):not(:where(.htlpro-widget, .htlpro-widget *)) {
  color: var(--htlpro-ink); background-color: var(--htlpro-surface);
  border-color: var(--htlpro-control-line); border-radius: 8px;
  min-height: 44px; max-width: 100%; font-size: 16px;
}
.htlpro-ui :is(.form-control, .form-select, .cabinet-form-input, .auth-form-input):is(input, select, textarea) { border-color: var(--htlpro-control-line); }
.htlpro-ui :is(input, select, textarea):focus:not(:where(.htlpro-widget, .htlpro-widget *)) { border-color: var(--htlpro-focus); }
.htlpro-ui :is(input, select, textarea):disabled:not(:where(.htlpro-widget, .htlpro-widget *)) { background-color: var(--htlpro-canvas); color: var(--htlpro-muted); cursor: not-allowed; }
.htlpro-ui :is(input[type=checkbox], input[type=radio]):not(:where(.htlpro-widget, .htlpro-widget *)) { accent-color: var(--htlpro-accent); width: 18px; height: 18px; flex-shrink: 0; }
.htlpro-ui :is(input, select, textarea):is([aria-invalid=true], .is-invalid):not(:where(.htlpro-widget, .htlpro-widget *)) { border-color: var(--ui-danger); }
.htlpro-ui :is(button, .btn)[aria-busy=true] { cursor: progress; }
.htlpro-ui :is(.btn-outline-primary, .btn-outline-secondary) { color: var(--htlpro-accent); border-color: var(--htlpro-accent); background: var(--htlpro-surface); }
.htlpro-ui :is(.btn-outline-primary, .btn-outline-secondary):hover { color: var(--htlpro-accent); border-color: var(--htlpro-accent); background: var(--htlpro-surface-accent); }
.htlpro-ui :is(.pagination a, .pagination span, .page-link) { min-width: 44px; min-height: 44px; align-content: center; text-align: center; }
.htlpro-ui :is(.pagination .active, .page-item.active .page-link) { background: var(--htlpro-accent); border-color: var(--htlpro-accent); color: #fff; }
.htlpro-ui :is(.modal-content, .auth-box) { background: var(--htlpro-surface); color: var(--htlpro-ink); border: 1px solid var(--htlpro-line); }
.htlpro-ui :is(.modal-title, .auth-title) { font-size: 24px; line-height: 30px; }
.htlpro-ui :is(.auth-message, .static-page-meta, .pr-desc) { color: var(--htlpro-muted); }
.htlpro-ui :is(.auth-box, .cabinet-card, .cabinet-stat-card, .pr-order-card) { border-radius: 12px; border: 1px solid var(--htlpro-line); box-shadow: none; }
.htlpro-ui :is(.pms-header-info, .ota-header-info, .mp-header-info, .cabinet-main, .cabinet-header, .cabinet-user-details, .hotel-list-info) { min-width: 0; }
.htlpro-ui :is(h1, h2, h3, p, dd, td, .owners-name, .ow-name, .hotel-list-name, .cabinet-user-name, .pms-review-text, .ota-review-text, .mp-review-text, .hotel-review-text):not(:where(.htlpro-widget, .htlpro-widget *)) { overflow-wrap: anywhere; }
.htlpro-ui :is(.pms-description, .ota-description, .mp-description, .static-page-content, .hotel-review-text, .ota-review-text, .mp-review-text) { color: var(--htlpro-ink); font-size: 16px; line-height: 24px; }
.htlpro-ui :is(.pms-section, .ota-section, .mp-section, .hotel-section, .ow-panel, .owner-row) { border-color: var(--htlpro-line); border-radius: 12px; }
.htlpro-ui :is(.pms-form-group, .ota-form-group, .mp-form-group, .hotel-form-group) > label { color: var(--htlpro-ink); }
.htlpro-ui :is(.pms-review-meta, .ota-review-meta, .mp-review-meta, .hotel-review-meta) { font-size: 14px; line-height: 20px; }
.htlpro-ui :is(.pms-star-label, .ota-star-label, .mp-star-label, .hotel-star-label) { min-width: 44px; min-height: 44px; }
.htlpro-ui :is(.pms-rating-bar-fill, .ota-rating-bar-fill, .mp-rating-bar-fill, .review-rating-bar-fill) { background: var(--htlpro-accent); }
.htlpro-ui :is(.pms-price-box, .mp-price-box, .ota-price-box, .pr-notice-info) { background: var(--htlpro-surface-accent); border-color: var(--htlpro-line); }
.htlpro-ui :is(.mp-price-value, .ota-price-value) { color: var(--htlpro-ink); }

/* Home keeps its sections, map geometry, real logos and marquee controls. */
.htlpro-ui.home-ref { --hr-accent: var(--htlpro-accent); }
.htlpro-ui :is(.hr-hero, .hr-section-alt, .hr-cta) { background: var(--htlpro-surface-accent); color: var(--htlpro-ink); }
.htlpro-ui :is(.hr-title, .hr-title span, .hr-h2, .hr-h2 span) { color: var(--htlpro-ink); }
.htlpro-ui :is(.hr-btn-primary, .hr-question-btn) { color: #fff; background: var(--htlpro-accent); border-color: var(--htlpro-accent); }
.htlpro-ui :is(.hr-btn-primary, .hr-question-btn):hover { color: #fff; background: var(--htlpro-accent-hover); }
.htlpro-ui :is(.hr-card, .hr-faq-item, .hr-stat-card) { border-color: var(--htlpro-line); border-radius: 12px; }
.htlpro-ui .hr-russia-svg path { fill: var(--htlpro-line); }
.htlpro-ui .hr-russia-svg path[data-code]:is(:hover, .hr-region-active) { fill: var(--htlpro-control-line) !important; }
.htlpro-ui :is(.hr-city-badge .count, .hr-city-badge::before) { color: var(--htlpro-accent); }

/* OTA and Marketplace retain their own navigation and card composition. */
.htlpro-ui :is(.ota-hero, .mp-hero) { background: var(--htlpro-surface-accent); color: var(--htlpro-ink); }
.htlpro-ui :is(.ota-hero, .mp-hero)::before { background-image: none; }
.htlpro-ui :is(.ota-hero h1, .mp-hero h1, .ota-hero h1 span, .mp-hero h1 span, .ota-hero-stat-num, .mp-hero-stat-num) { color: var(--htlpro-ink); }
.htlpro-ui :is(.ota-hero-lead, .mp-hero-lead, .ota-hero-stat-label, .mp-hero-stat-label) { color: var(--htlpro-muted); }
.htlpro-ui :is(.ota-hero-eyebrow, .mp-hero-eyebrow) { color: var(--htlpro-accent); background: var(--htlpro-selected); border-color: var(--htlpro-control-line); }
.htlpro-ui :is(.ota-hero-eyebrow i, .mp-hero-eyebrow i) { color: var(--htlpro-accent); }
.htlpro-ui :is(.ota-nav, .mp-sidebar, .mp-cat-bar, .ota-card, .mp-vendor-card) { background: var(--htlpro-surface); border-color: var(--htlpro-line); }
.htlpro-ui :is(.mp-cat-bar-btn.active, .mp-sidebar-link.active, .ota-nav-link.active) { background: var(--htlpro-selected); color: var(--htlpro-accent); border-color: var(--htlpro-control-line); }
.htlpro-ui :is(.mp-vendor-link, .mp-vendor-link:hover, .mp-category-title i, .mp-modal-tag-price) { color: var(--htlpro-accent); }
.htlpro-ui :is(.mp-vendor-quick, .mp-modal-tag-price) { background: var(--htlpro-surface-accent); }
.htlpro-ui :is(.mp-modal-link, .ota-btn-primary, .mp-hero-btn, .mp-application-next) { color: #fff; background: var(--htlpro-accent); border-color: var(--htlpro-accent); }
.htlpro-ui :is(.mp-modal-link, .ota-btn-primary, .mp-hero-btn, .mp-application-next):hover { color: #fff; background: var(--htlpro-accent-hover); border-color: var(--htlpro-accent-hover); }
.htlpro-ui :is(.ota-card, .mp-vendor-card) { border-radius: 12px; }
.htlpro-ui :is(.mp-vendor-quick, .mp-cat-bar-btn, .mp-vendor-link, .ota-nav-link, .ota-card-link) { min-height: 44px; align-content: center; }

/* Cabinet uses its existing sidebar, cards, editor and role guards. */
.htlpro-ui.cabinet-layout { background: var(--htlpro-canvas); }
.htlpro-ui .cabinet-page-title { font-size: 24px; line-height: 30px; }
.htlpro-ui .cabinet-card-title { font-size: 20px; line-height: 26px; }
.htlpro-ui .cabinet-nav-item.active { background: var(--htlpro-selected); color: var(--htlpro-accent); border: 1px solid var(--htlpro-control-line); }
.htlpro-ui .cabinet-nav-item.active i { color: var(--htlpro-accent); }
.htlpro-ui :is(.cabinet-nav-section, .cabinet-user-role, .cabinet-form-hint) { font-size: 12px; line-height: 18px; color: var(--htlpro-muted); }
.htlpro-ui :is(.cabinet-stat-label, .cabinet-form-label) { font-size: 14px; line-height: 20px; }
.htlpro-ui :is(.cabinet-stat-icon.primary, .cabinet-stat-icon.info, .quick-action-icon) { color: var(--htlpro-accent); background: var(--htlpro-surface-accent); }
.htlpro-ui .cabinet-header-actions { flex-wrap: wrap; }
.htlpro-ui .cabinet-content > article { padding: 24px; margin-block: 16px; border: 1px solid var(--htlpro-line); border-radius: 12px; background: var(--htlpro-surface); }
.htlpro-ui :is(.cabinet-card-body, .cabinet-content) :is(table, .table-responsive) { max-width: 100%; }
.htlpro-ui .cabinet-content > ul { background: var(--htlpro-surface); border: 1px solid var(--htlpro-line); border-radius: 12px; padding: 24px 24px 24px 40px; }
.htlpro-ui .cabinet-content > ul li + li { margin-top: 16px; }
.htlpro-ui .cabinet-content > ul button { padding: 8px 16px; color: var(--htlpro-accent); background: var(--htlpro-surface); border: 1px solid var(--htlpro-control-line); }

/* Legal and service screens preserve their original text, totals and statuses. */
.htlpro-ui.static-page .static-page-content table { display: table; overflow: visible; }
.htlpro-ui.static-page .static-page-content :is(th, td) { min-width: 140px; }
.htlpro-ui .pr-order-item { gap: 16px; }
.htlpro-ui .pr-order-item-price { flex-shrink: 0; }
.htlpro-ui.auth-page { background: var(--htlpro-canvas); }
.htlpro-ui .auth-password-toggle { right: 4px; }
.htlpro-ui.htlpro-message { border: 1px solid var(--htlpro-line); border-radius: 12px; margin-block: 32px; padding: 24px; }

/* Shared components are siblings of content. Exact targets intentionally exclude header controls. */
body:has(.htlpro-ui) :is(#authModal, #registerSuccessModal, #contactModal) { color: var(--htlpro-ink); font: 400 16px/24px var(--ui-font); }
body:has(.htlpro-ui) #authModal .auth-modal-content,
body:has(.htlpro-ui) #contactModal .base-modal-content { background: var(--htlpro-surface); border: 1px solid var(--htlpro-line); }
body:has(.htlpro-ui) #authModal :is(.auth-tab, .auth-form-label, .auth-type-card),
body:has(.htlpro-ui) #contactModal .base-form-label { color: var(--htlpro-ink); }
body:has(.htlpro-ui) #authModal :is(.auth-tab.active, .auth-type-option input:checked + .auth-type-card) { color: var(--htlpro-accent); background: var(--htlpro-selected); border-color: var(--htlpro-control-line); }
body:has(.htlpro-ui) #authModal :is(.auth-form-input),
body:has(.htlpro-ui) #contactModal .form-input { color: var(--htlpro-ink); background: var(--htlpro-surface); border-color: var(--htlpro-control-line); border-radius: 8px; min-height: 44px; }
body:has(.htlpro-ui) #authModal :is(.auth-forgot-link, .auth-consent-label, .auth-password-toggle),
body:has(.htlpro-ui) #contactModal .base-modal-desc { color: var(--htlpro-muted); }
body:has(.htlpro-ui) #authModal .auth-submit-btn,
body:has(.htlpro-ui) #registerSuccessModal .base-success-login-btn,
body:has(.htlpro-ui) #contactModal .btn-primary { color: #fff; background: var(--htlpro-accent); border-color: var(--htlpro-accent); min-height: 44px; }
body:has(.htlpro-ui) #authModal .auth-submit-btn:hover:not(:disabled),
body:has(.htlpro-ui) #registerSuccessModal .base-success-login-btn:hover:not(:disabled),
body:has(.htlpro-ui) #contactModal .btn-primary:hover:not(:disabled) { background: var(--htlpro-accent-hover); border-color: var(--htlpro-accent-hover); }
body:has(.htlpro-ui) #authModal .auth-submit-btn:active:not(:disabled),
body:has(.htlpro-ui) #registerSuccessModal .base-success-login-btn:active:not(:disabled),
body:has(.htlpro-ui) #contactModal .btn-primary:active:not(:disabled) { background: var(--htlpro-accent-pressed); border-color: var(--htlpro-accent-pressed); }
body:has(.htlpro-ui) #authModal :is(button, input, a):focus-visible,
body:has(.htlpro-ui) #contactModal :is(button, input, textarea, a):focus-visible,
body:has(.htlpro-ui) #registerSuccessModal button:focus-visible,
body:has(.htlpro-ui) .site-footer :is(button, input, a):focus-visible { outline: 3px solid var(--htlpro-focus); outline-offset: 3px; }
body:has(.htlpro-ui) #authModal :is(.auth-tab, .auth-password-toggle, .auth-forgot-link),
body:has(.htlpro-ui) #contactModal button { min-width: 44px; min-height: 44px; }
body:has(.htlpro-ui) #authModal input[type=checkbox],
body:has(.htlpro-ui) #contactModal input[type=checkbox],
body:has(.htlpro-ui) .site-footer input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--htlpro-accent); }
body:has(.htlpro-ui) #authModal .auth-submit-btn:disabled,
body:has(.htlpro-ui) #contactModal button:disabled { opacity: .5; cursor: not-allowed; }
body:has(.htlpro-ui) .site-footer { background: var(--htlpro-canvas); color: var(--htlpro-ink); border-color: var(--htlpro-line); }
body:has(.htlpro-ui) .site-footer :is(.footer-description, .footer-consent, .footer-copyright) { color: var(--htlpro-muted); }
body:has(.htlpro-ui) .site-footer a { color: var(--htlpro-accent); }
body:has(.htlpro-ui) .site-footer :is(input[type=email], .footer-newsletter-btn) { min-height: 44px; border-radius: 8px; border-color: var(--htlpro-control-line); }
body:has(.htlpro-ui) .site-footer .footer-newsletter-btn { color: #fff; background: var(--htlpro-accent); }
body:has(.htlpro-ui) .site-footer .footer-newsletter-btn:hover { background: var(--htlpro-accent-hover); }

@media (max-width: 767px) {
  .htlpro-ui :is(.ota-hero h1, .mp-hero h1) { font-size: 28px; line-height: 34px; }
  .htlpro-ui .cabinet-header { flex-wrap: wrap; }
  .htlpro-ui .cabinet-header-actions { width: 100%; }
  .htlpro-ui .cabinet-header-actions .btn { white-space: normal; }
  .htlpro-ui .cabinet-page-title { font-size: 24px; line-height: 30px; }
}
.htlpro-ui.htlpro-login { --ui-font: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; border: 1px solid var(--htlpro-line); border-radius: 12px; box-shadow: none; }
.htlpro-ui.htlpro-login .btn { background: var(--htlpro-accent); border-radius: 8px; }
.htlpro-ui.htlpro-login .btn:hover { background: var(--htlpro-accent-hover); box-shadow: none; transform: none; }
.htlpro-ui.htlpro-login .login-header h1 { color: var(--htlpro-ink); }
.htlpro-ui [role=radio][data-value] { display: inline-flex; justify-content: center; align-items: center; width: 44px; height: 44px; cursor: pointer; }
.htlpro-ui [role=radio][data-value]:focus-visible { outline: 3px solid var(--htlpro-focus); outline-offset: 2px; border-radius: 8px; }
/* Readable neutral hero surfaces and the same primary action across catalogs. */
.htlpro-ui :is(.ota-hero-cta, .mp-hero-cta) { color: #fff; background: var(--htlpro-accent); border: 1px solid var(--htlpro-accent); border-radius: 8px; box-shadow: none; }
.htlpro-ui :is(.ota-hero-cta, .mp-hero-cta):hover { color: #fff; background: var(--htlpro-accent-hover); box-shadow: none; }
.htlpro-ui :is(.mp-hero h1 em, .ota-rank-commission, .mp-cat-widget-title i, .ota-rank-widget-title i, .mp-cat-row-cnt) { color: var(--htlpro-accent); }
.htlpro-ui :is(.ota-rank-widget, .mp-cat-widget) { color: var(--htlpro-ink); background: var(--htlpro-surface); border: 1px solid var(--htlpro-line); border-radius: 12px; }
.htlpro-ui :is(.ota-rank-widget-title, .mp-cat-widget-title, .mp-cat-row, .ota-rank-row) { color: var(--htlpro-ink); }
.htlpro-ui :is(.mp-cat-row-cnt, .mp-cat-row-icon) { background: var(--htlpro-surface-accent); }
.htlpro-ui :is(.mp-cat-widget-divider, .mp-hero-sep) { background: var(--htlpro-line); }
.htlpro-ui :is(.mp-cat-mosaic-item, .mp-cat-mosaic-item:nth-child(n)) { color: var(--htlpro-accent); background: var(--htlpro-selected); }
.htlpro-ui :is(.ota-nav-progress, .ota-nav-indicator) { background: var(--htlpro-accent); }
.htlpro-ui .mp-vendor-card::before { background: var(--htlpro-accent); }
.htlpro-ui .ota-nav-inner a { color: var(--htlpro-muted); }
.htlpro-ui .ota-nav-inner a:is(:hover, .nav-active) { color: var(--htlpro-accent); background: var(--htlpro-selected); }
.htlpro-ui .ota-nav-inner a.nav-active i { color: var(--htlpro-accent); }
.htlpro-ui :is(.mp-cat-bar-btn.is-active, .mp-sidebar-item.is-active) { color: var(--htlpro-accent); background: var(--htlpro-selected); border-color: var(--htlpro-control-line); }
.htlpro-ui .mp-sidebar-item.is-active .mp-si-cnt { color: var(--htlpro-accent); background: var(--htlpro-surface); }
.htlpro-ui :is(.hr-title span, .hr-section-title span) { color: var(--htlpro-accent); background: none; -webkit-text-fill-color: currentColor; }
.htlpro-ui :is(.hr-chip, .hr-rating) { color: var(--htlpro-accent); background: var(--htlpro-selected); border-color: var(--htlpro-line); }
.htlpro-ui :is(.hr-section-soft, .hr-cta) { background: var(--htlpro-surface-accent); }
.htlpro-ui :is(.hr-lead, .hr-section-subtitle, .hr-feature-body p, .hr-text-card p, .hr-seo-text, .hr-faq-panel p, .hr-review-author small) { color: var(--htlpro-muted); }
.htlpro-ui :is(.hr-side-stats i, .hr-cta ul i, .hr-adv-card i, .hr-faq-btn i, .hr-feature-body span, .hr-section-head a) { color: var(--htlpro-accent); }
.htlpro-ui :is(.hr-review-nav button:last-child, .hr-review-dot.is-active) { color: #fff; background: var(--htlpro-accent); }
.htlpro-ui .hs-hero-content a { color: #fff; }
/* A vendor review heading must wrap inside its flex item on narrow screens. */
.htlpro-ui :is(.mp-header, .ota-header, .pms-header) { min-width: 0; }
.htlpro-ui :is(.mp-header-info, .ota-header-info, .pms-header-info) { overflow-wrap: anywhere; }
.htlpro-ui :is(.mp-reviews-header, .ota-reviews-header, .pms-reviews-header) { flex-wrap: wrap; gap: 16px; }
.htlpro-ui :is(.mp-form-row, .ota-form-row, .pms-form-row) > * { min-width: 0; }
.htlpro-ui :is(.mp-header-logo, .ota-header-logo, .pms-header-logo) img { width: 100%; max-width: 100%; height: 100%; object-fit: contain; }
.htlpro-ui form[aria-busy=true] [data-htlpro-busy] { opacity: .5; cursor: progress; pointer-events: none; }
.htlpro-ui .pagination { flex-wrap: wrap; gap: 4px; }

/* Review corrections: states win over the low-specificity field defaults, also in sibling dialogs. */
body:has(.htlpro-ui) #authModal .auth-form-input:focus,
body:has(.htlpro-ui) #contactModal .form-input:focus { border-color: var(--htlpro-focus); }
body:has(.htlpro-ui) #authModal .auth-form-input:is(.is-invalid, [aria-invalid=true]),
body:has(.htlpro-ui) #contactModal .form-input:is(.is-invalid, [aria-invalid=true]) { border-color: var(--ui-danger); }
body:has(.htlpro-ui) #authModal .auth-form-input:disabled,
body:has(.htlpro-ui) #contactModal .form-input:disabled { background-color: var(--htlpro-canvas); color: var(--htlpro-muted); cursor: not-allowed; }
.htlpro-ui .ow-back-link { color: #fff; }
.htlpro-ui .ow-hero-title { white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; }
.htlpro-ui :is(.mp-sidebar-item, .mp-sort-btn, .mp-page-btn) { min-height: 44px; min-width: 44px; display: inline-flex; align-items: center; }
.htlpro-ui .mp-sidebar-item { display: flex; }
.htlpro-ui .mp-sort-btn:is(:hover, .active) { color: var(--htlpro-accent); background: var(--htlpro-selected); border-color: var(--htlpro-control-line); }
.htlpro-ui .mp-page-btn.active { color: #fff; background: var(--htlpro-accent); border-color: var(--htlpro-accent); }
.htlpro-ui :is(.hr-city-badge, .ow-org-badge, .ow-stat-lbl, .ow-info-row-label, .card-badge-type, .card-icon-badge, .ow-id-pill) { font-size: 12px; line-height: 18px; }
.htlpro-ui.catalog-ui :is(#roomCountSlider, #hotels-map-panel) { color: #192F40; font-size: 16px; line-height: 24px; }
.htlpro-ui .htlpro-table-scroll { max-width: 100%; overflow-x: auto; border: 1px solid var(--htlpro-line); border-radius: 8px; }
.htlpro-ui .htlpro-table-scroll:focus-visible { outline: 3px solid var(--htlpro-focus); outline-offset: 3px; }
.htlpro-ui .htlpro-table-scroll table { margin: 0; }
.htlpro-ui .htlpro-table-hint { color: var(--htlpro-muted); font-size: 14px; line-height: 20px; margin-bottom: 8px; }
/* Bootstrap's .form-control.is-invalid:focus must retain the error role too. */
.htlpro-ui :is(input, select, textarea):is([aria-invalid=true], .is-invalid):focus:not(:where(.htlpro-widget, .htlpro-widget *)) { border-color: var(--ui-danger); }
.htlpro-ui.catalog-ui :is(#roomCountSlider, #hotels-map-panel) { font-family: var(--ui-font), sans-serif; }

.htlpro-ui [data-controller="hotel-map"].htlpro-widget:not(.maplibregl-map) { font: 400 14px/21px Inter, -apple-system, BlinkMacSystemFont, sans-serif; }
/* Keep the existing native registration radio group reachable by keyboard. */
body:has(.htlpro-ui) #authModal .auth-type-option input[type=radio] { display: block; position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; clip-path: inset(50%); overflow: hidden; white-space: nowrap; }
body:has(.htlpro-ui) #authModal .auth-type-option input[type=radio]:focus-visible + .auth-type-card { outline: 3px solid var(--htlpro-focus); outline-offset: 3px; }
body:has(.htlpro-ui) #authModal .auth-type-card { position: relative; }
body:has(.htlpro-ui) #authModal .auth-type-option input[type=radio]:checked + .auth-type-card::after { content: '✓'; position: absolute; top: 4px; right: 6px; font-size: 14px; line-height: 18px; color: var(--htlpro-accent); }
