/* Строка поиска: поле, выбор области, кнопка отправки, выпадающий список.
   Часть components/forms.css; порядок частей важен — см. static/README.md. */
@keyframes search-submit-idle-breathe {
    0%,
    100% {
        background-color: transparent;
        border-color: transparent;
        color: var(--text-primary);
    }
    50% {
        background-color: color-mix(in srgb, var(--control-selected-bg) 36%, transparent);
        border-color: color-mix(in srgb, var(--control-selected-border) 42%, transparent);
        color: var(--control-selected-color);
    }
}

@keyframes search-submit-idle-icon-breathe {
    0%,
    100% {
        filter: var(--search-utility-icon-filter);
        opacity: 0.94;
    }
    50% {
        filter: var(--icon-filter-brand);
        opacity: 1;
    }
}

.search-form[data-search-scope] {
    --search-shell-padding: 3px;
    --search-shell-gap: var(--control-gap-2xs);
    --search-shell-bg: var(--glass-surface-bg-strong);
    --search-shell-border: var(--glass-surface-border);
    --search-shell-shadow: var(--glass-surface-shadow);
    --search-shell-backdrop: var(--glass-surface-backdrop);
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--search-shell-gap);
    width: 100%;
    min-width: 0;
    min-height: var(--search-bar-height, calc(var(--search-action-size, 32px) + (var(--search-shell-padding) * 2)));
    padding: var(--search-shell-padding);
    border: 1px solid var(--search-shell-border);
    border-radius: var(--radius-pill);
    background: var(--search-shell-bg);
    box-shadow: var(--search-shell-shadow);
    -webkit-backdrop-filter: var(--search-shell-backdrop);
    backdrop-filter: var(--search-shell-backdrop);
    overflow: visible;
    transition:
        border-color var(--button-transition-duration) var(--button-transition-ease),
        background-color var(--button-transition-duration) var(--button-transition-ease),
        box-shadow var(--button-transition-duration) var(--button-transition-ease);
}

.search-form[data-search-scope]:not([data-search-scope="header"]) {
    --search-shell-bg: var(--glass-surface-bg);
    --search-sticky-top-aligned: var(--sidebar-sticky-top-current, var(--search-sticky-top-current, var(--search-sticky-top, 82px)));
    position: sticky;
    top: var(--search-sticky-top-aligned);
    z-index: var(--z-quick-bar);
    box-shadow: var(--search-shell-shadow), 0 0 0 1px var(--glass-surface-border);
    /* Move glass background + blur to ::before so the form element itself
       does NOT create a backdrop-filter compositing context.
       Without a backdrop root on the form, the absolutely-positioned dropdown
       inside can apply its own backdrop-filter against actual page content
       (not a nested compositing layer), giving it a true frosted-glass look. */
    background: transparent;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

/* Ниже правила :not([data-search-scope="header"]) намеренно: у них одинаковая
   специфичность, и выше по файлу подсветка фокуса проигрывала обычной тени —
   вне шапки её не было видно вовсе. */
.search-form[data-search-scope]:focus-within {
    border-color: var(--brand-color);
    box-shadow: var(--shadow-search-focus), 0 0 0 1.5px var(--glass-surface-border);
    outline: none;
}

.search-form[data-search-scope]:not([data-search-scope="header"])::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: var(--search-shell-bg);
    -webkit-backdrop-filter: var(--search-shell-backdrop);
    backdrop-filter: var(--search-shell-backdrop);
    pointer-events: none;
    z-index: -1;
}

body.is-header-collapsed .search-form[data-search-scope]:not([data-search-scope="header"]) {
    z-index: calc(var(--z-quick-bar) - 1);
}

.search-form[data-search-scope="header"] {
    min-width: 0;
    /* The surface already provides the glass / backdrop-filter layer.
       Remove the form's own background and shadow so the search panel
       opening looks consistent with the menu panel: content floating on
       the glass surface, not a nested white card growing out of it.
       The pill border is kept for shape + focus-state feedback.
       backdrop-filter: none prevents nested compositing artifacts. */
    background: transparent;
    box-shadow: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

[data-search-select],
[data-search-input],
[data-search-submit],
[data-search-symbol],
[data-search-clear] {
    border: 1px solid transparent;
}

[data-search-select] {
    --select-like-arrow-width: 10px;
    --select-like-arrow-height: 6px;
    --select-like-arrow-offset: 10px;
    --select-like-arrow-opacity: 0.72;
    --select-like-arrow-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='black' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    --select-like-arrow-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%230f1b20' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    --select-like-arrow-image-accent: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%231a7465' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    appearance: none;
    -webkit-appearance: none;
    height: var(--search-action-size, 32px);
    min-height: var(--search-action-size, 32px);
    max-height: var(--search-action-size, 32px);
    min-width: var(--search-language-min-width, clamp(88px, 18vw, 118px));
    max-width: var(--search-language-max-width, 136px);
    width: auto;
    flex: 0 0 auto;
    align-self: center;
    margin: 0;
    padding: 0 calc(var(--control-padding-x-base) + var(--select-like-arrow-width) + 8px) 0 var(--control-padding-x-base);
    border-radius: var(--button-radius-unified);
    background-color: transparent;
    background-image: var(--select-like-arrow-image);
    background-repeat: no-repeat;
    background-position: right var(--select-like-arrow-offset) center;
    background-size: var(--select-like-arrow-width) var(--select-like-arrow-height);
    color: var(--text-primary);
    font-size: var(--search-language-font-size, var(--font-size-sm));
    line-height: var(--type-control-line);
    cursor: pointer;
    white-space: nowrap;
    transition:
        background-color var(--button-transition-duration) var(--button-transition-ease),
        border-color var(--button-transition-duration) var(--button-transition-ease),
        color var(--button-transition-duration) var(--button-transition-ease);
}

.search-form[data-search-scope]:not([data-search-scope="header"]) > [data-search-select] {
    width: var(--search-selector-width, auto);
}

.search-form[data-search-scope="header"] > [data-search-select] {
    min-width: var(--search-selector-width, clamp(88px, 18vw, 118px));
    max-width: var(--search-selector-width, 136px);
    --select-like-arrow-offset: 12px;
}

[data-search-input] {
    flex: 1 1 0;
    width: auto;
    min-width: 0;
    align-self: center;
    height: var(--search-action-size, 32px);
    min-height: var(--search-action-size, 32px);
    padding: 0 var(--search-input-padding-x, var(--control-padding-x-base));
    background: transparent;
    color: var(--theme-text-strong);
    font-family: var(--font-sans-ui);
    font-size: var(--search-input-font-size, var(--font-size-md));
    line-height: var(--line-height-normal);
}

[data-search-input]::placeholder {
    color: var(--theme-text-muted);
    opacity: 1;
}

[data-search-input]:focus,
[data-search-input]:focus-visible {
    outline: none;
    border-color: transparent;
    background: transparent;
    box-shadow: none;
}

[data-search-submit],
[data-search-symbol],
[data-search-clear] {
    --search-utility-bg: transparent;
    --search-utility-bg-hover: var(--glass-control-hover-bg);
    --search-utility-border: transparent;
    --search-utility-border-hover: transparent;
    --search-utility-color: var(--text-secondary);
    --search-utility-color-hover: var(--control-selected-color);
    --search-utility-icon-filter: none;
    --search-utility-icon-filter-hover: var(--icon-filter-brand);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--search-action-size, 32px);
    height: var(--search-action-size, 32px);
    min-width: var(--search-action-size, 32px);
    min-height: var(--search-action-size, 32px);
    margin: 0;
    padding: 0;
    border-radius: var(--button-radius-unified);
    background: var(--search-utility-bg);
    color: var(--search-utility-color);
    cursor: pointer;
    transition:
        background-color var(--button-transition-duration) var(--button-transition-ease),
        border-color var(--button-transition-duration) var(--button-transition-ease),
        color var(--button-transition-duration) var(--button-transition-ease);
}

[data-search-submit] {
    --search-submit-idle-duration: 6.4s;
    --search-submit-idle-ease: cubic-bezier(0.4, 0, 0.2, 1);
    --search-utility-color: var(--text-primary);
}

[data-search-submit] .action-icon {
    width: var(--search-action-icon-size, 14px);
    height: var(--search-action-icon-size, 14px);
    display: block;
    position: relative;
    z-index: 1;
}

[data-search-submit] .action-icon__img {
    filter: var(--search-utility-icon-filter);
}

.search-form[data-search-scope]:not(:focus-within) [data-search-submit]:not(:disabled) {
    animation: search-submit-idle-breathe var(--search-submit-idle-duration) var(--search-submit-idle-ease) infinite;
}

.search-form[data-search-scope]:not(:focus-within) [data-search-submit]:not(:disabled) .action-icon__img {
    animation: search-submit-idle-icon-breathe var(--search-submit-idle-duration) var(--search-submit-idle-ease) infinite;
}

.search-form[data-search-scope] [data-search-submit]:is(:hover, :focus-visible, :active),
.search-form[data-search-scope] [data-search-submit]:is(:hover, :focus-visible, :active) .action-icon__img,
.search-form[data-search-scope]:focus-within [data-search-submit],
.search-form[data-search-scope]:focus-within [data-search-submit] .action-icon__img {
    animation: none;
}

[data-search-symbol],
[data-search-clear] {
    font-size: var(--search-symbol-font-size, 16px);
    line-height: 1;
    text-align: center;
    text-decoration: none;
}

[data-search-select]:focus,
[data-search-select]:focus-visible {
    border-color: var(--control-selected-border);
    color: var(--control-selected-color);
    background-color: var(--control-selected-bg);
    background-image: var(--select-like-arrow-image-accent);
}

[data-search-select]:not(:disabled):hover {
    border-color: transparent;
    color: var(--text-primary);
    background-color: var(--glass-control-hover-bg);
    background-image: var(--select-like-arrow-image-accent);
}

[data-search-submit]:not(:disabled):hover,
[data-search-submit]:not(:disabled):focus-visible,
[data-search-symbol]:not(:disabled):hover,
[data-search-symbol]:not(:disabled):focus-visible,
[data-search-clear]:not(:disabled):hover,
[data-search-clear]:not(:disabled):focus-visible {
    border-color: var(--search-utility-border-hover);
    background: var(--search-utility-bg-hover);
    color: var(--search-utility-color-hover);
}

[data-search-submit]:not(:disabled):hover .action-icon__img,
[data-search-submit]:not(:disabled):focus-visible .action-icon__img {
    filter: var(--search-utility-icon-filter-hover);
}

[data-search-clear][hidden] {
    display: none !important;
}

[data-search-select]:focus-visible,
[data-search-submit]:focus-visible,
[data-search-symbol]:focus-visible,
[data-search-clear]:focus-visible {
    outline: none;
}

[data-search-select]:focus,
[data-search-select]:focus-visible {
    box-shadow: none;
}

[data-search-submit]:focus-visible,
[data-search-symbol]:focus-visible,
[data-search-clear]:focus-visible {
    box-shadow: var(--state-focus-ring-shadow);
}

.search-form[data-search-scope]:not([data-search-scope="header"]) > [data-search-dropdown] {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + var(--control-gap-tight));
    z-index: var(--z-popover);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(-4px);
    transition:
        opacity    var(--motion-dur-base) var(--motion-ease-in),
        transform  var(--motion-dur-base) var(--motion-ease-in),
        visibility var(--motion-dur-base) var(--motion-ease-in);
    --search-dropdown-list-max-height: max(160px, calc(100dvh - var(--search-sticky-top-current, var(--search-sticky-top, 82px)) - var(--search-bar-height, var(--control-height-md)) - var(--search-dropdown-bottom-clearance, calc(92px + env(safe-area-inset-bottom))) - 2px));
}

.search-form[data-search-scope]:not([data-search-scope="header"]) > [data-search-dropdown].has-items,
.search-form[data-search-scope]:not([data-search-scope="header"]) > [data-search-dropdown][data-open="true"] {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
    transition:
        opacity    var(--motion-dur-base) var(--motion-ease),
        transform  var(--motion-dur-base) var(--motion-ease),
        visibility var(--motion-dur-base) var(--motion-ease);
}

.search-form[data-search-scope="header"] > [data-search-dropdown="header"] {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + var(--control-gap-tight));
    z-index: var(--z-popover);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    display: block;
    transform: translateY(-4px);
    transition:
        opacity    var(--motion-dur-base) var(--motion-ease-in),
        transform  var(--motion-dur-base) var(--motion-ease-in),
        visibility var(--motion-dur-base) var(--motion-ease-in);
    --search-dropdown-list-max-height: max(220px, calc(100dvh - var(--site-header-bar-height) - var(--site-header-search-results-clearance)));
    /* Keep the same elevated shadow as the base [data-search-dropdown] rule */
    border-color: var(--glass-surface-border);
}

.search-form[data-search-scope="header"] > [data-search-dropdown="header"].has-items,
.search-form[data-search-scope="header"] > [data-search-dropdown="header"][data-open="true"] {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
    transition:
        opacity    var(--motion-dur-base) var(--motion-ease),
        transform  var(--motion-dur-base) var(--motion-ease),
        visibility var(--motion-dur-base) var(--motion-ease);
}

[data-search-dropdown] {
    --search-dropdown-item-bg: color-mix(in srgb, var(--theme-surface-base) 92%, transparent);
    --search-dropdown-item-border: color-mix(in srgb, var(--theme-border-normal) 76%, transparent);
    --search-dropdown-item-hover-border: color-mix(in srgb, var(--theme-border-focus) 72%, var(--theme-border-normal));
    --search-dropdown-item-selected-shadow: inset 0 0 0 1px color-mix(in srgb, var(--theme-border-focus) 62%, transparent);
    /* Glass card: same recipe as toast (bg-strong + backdrop blur) so frost effect
       is consistent. The shadow here is intentionally heavier than --glass-surface-shadow
       (which is 3.5% opacity — invisible on light/white backgrounds). Dropdowns float
       above page content that can be any lightness, so elevation must be unambiguous. */
    background: var(--glass-surface-bg-strong);
    border: 1px solid var(--glass-surface-border);
    border-radius: var(--surface-radius);
    box-shadow: var(--shadow-search-dropdown);
    -webkit-backdrop-filter: var(--glass-surface-backdrop);
    backdrop-filter: var(--glass-surface-backdrop);
    height: auto;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    box-sizing: border-box;
    container-type: inline-size;
}

[data-search-dropdown]:focus-within {
    border-color: var(--theme-border-focus);
}

.search-form[data-search-scope="header"] > [data-search-dropdown="header"]:focus-within {
    border-color: var(--theme-border-focus);
}

[data-search-results] {
    margin: 0;
    padding: var(--control-padding-2xs);
    padding-bottom: max(var(--control-padding-2xs), env(safe-area-inset-bottom));
    list-style: none;
    display: grid;
    gap: var(--control-gap-2xs);
    max-height: var(--search-dropdown-list-max-height, max(220px, calc(100dvh - 140px - (92px + env(safe-area-inset-bottom)))));
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-gutter: stable both-edges;
    scrollbar-width: thin;
    scrollbar-color: var(--theme-border-control) transparent;
    scroll-padding-block: var(--control-gap-2xs);
    box-sizing: border-box;
}

[data-search-results]::-webkit-scrollbar {
    width: 10px;
}

[data-search-results]::-webkit-scrollbar-track {
    background: transparent;
}

[data-search-results]::-webkit-scrollbar-thumb {
    background: var(--theme-border-control);
    border-radius: var(--button-radius-unified);
    border: 3px solid transparent;
    background-clip: padding-box;
}
