/* ================================================
   STRELA — Touch & Mobile Optimizations
   ================================================ */

/*
 * iOS WebKit: тап по декоративному потомку (<svg>, <i>, <span>…) внутри
 * <a>/<button> даёт :active на родителе, но click на родителя не синтезируется.
 * Решение: hit-testing только на интерактивном предке (pointer-events: none у детей).
 * Исключения: поля ввода, [data-tap-target], карта Leaflet.
 */
@media (hover: none) and (pointer: coarse) {
    html:not(.strela-map-page) a[href] *:not(input):not(textarea):not(select):not(button):not(a):not([role="button"]):not([onclick]):not([data-tap-target]):not([contenteditable="true"]),
    html:not(.strela-map-page) button *:not(input):not(textarea):not(select):not(button):not(a):not([role="button"]):not([data-tap-target]):not([contenteditable="true"]),
    html:not(.strela-map-page) [role="button"] *:not(input):not(textarea):not(select):not(button):not(a):not([role="button"]):not([data-tap-target]):not([contenteditable="true"]),
    html:not(.strela-map-page) [onclick]:not(input):not(textarea):not(select):not(button):not(a) *:not(input):not(textarea):not(select):not(button):not(a):not([role="button"]):not([onclick]):not([data-tap-target]):not([contenteditable="true"]),
    html:not(.strela-map-page) label[for] *:not(input):not(textarea):not(select):not(button):not(a):not([data-tap-target]),
    html:not(.strela-map-page) .custom-header .menu-button *:not(input):not(textarea):not(select):not(button):not(a):not([role="button"]):not([data-tap-target]),
    html:not(.strela-map-page) .custom-header .header-action-btn *:not(input):not(textarea):not(select):not(button):not(a):not([data-tap-target]),
    html:not(.strela-map-page) .custom-header .hdr-back-btn *:not(input):not(textarea):not(select):not(button):not(a):not([data-tap-target]),
    html:not(.strela-map-page) .mobile-footer .footer-btn *:not(input):not(textarea):not(select):not(button):not(a):not([role="button"]):not([data-tap-target]),
    html.strela-map-page .custom-header a[href] *:not(input):not(textarea):not(select):not(button):not(a):not([data-tap-target]),
    html.strela-map-page .custom-header button *:not(input):not(textarea):not(select):not(button):not(a):not([data-tap-target]),
    html.strela-map-page .custom-header .menu-button *:not(input):not(textarea):not(select):not(button):not(a):not([data-tap-target]),
    html.strela-map-page .custom-header .header-action-btn *:not(input):not(textarea):not(select):not(button):not(a):not([data-tap-target]),
    html.strela-map-page .mobile-footer a[href] *:not(input):not(textarea):not(select):not(button):not(a):not([data-tap-target]),
    html.strela-map-page .mobile-footer .footer-btn *:not(input):not(textarea):not(select):not(button):not(a):not([data-tap-target]),
    html.strela-map-page .dropdown-menu a[href] *:not(input):not(textarea):not(select):not(button):not(a):not([data-tap-target]) {
        pointer-events: none;
    }

    html:not(.strela-map-page) a[href]::before,
    html:not(.strela-map-page) a[href]::after,
    html:not(.strela-map-page) button::before,
    html:not(.strela-map-page) button::after,
    html:not(.strela-map-page) [role="button"]::before,
    html:not(.strela-map-page) [role="button"]::after,
    html:not(.strela-map-page) [onclick]:not(input):not(textarea):not(select)::before,
    html:not(.strela-map-page) [onclick]:not(input):not(textarea):not(select)::after,
    html:not(.strela-map-page) .custom-header .menu-button::before,
    html:not(.strela-map-page) .custom-header .menu-button::after,
    html:not(.strela-map-page) .mobile-footer .footer-btn::before,
    html:not(.strela-map-page) .mobile-footer .footer-btn::after,
    html.strela-map-page .custom-header a[href]::before,
    html.strela-map-page .custom-header a[href]::after,
    html.strela-map-page .custom-header button::before,
    html.strela-map-page .custom-header button::after,
    html.strela-map-page .custom-header .menu-button::before,
    html.strela-map-page .custom-header .menu-button::after,
    html.strela-map-page .mobile-footer a[href]::before,
    html.strela-map-page .mobile-footer a[href]::after,
    html.strela-map-page .mobile-footer .footer-btn::before,
    html.strela-map-page .mobile-footer .footer-btn::after {
        pointer-events: none;
    }
}

/* Убираем 300ms задержку тапа (кроме интерактивных карт Leaflet) */
html:not(.strela-map-page) * {
    touch-action: manipulation;
}

html.strela-map-page #map,
html.strela-map-page #map *,
html.strela-map-page .leaflet-container,
html.strela-map-page .leaflet-container *,
html.strela-map-page .leaflet-pane,
html.strela-map-page .leaflet-pane * {
    touch-action: auto;
}

/* ── iOS / touch: без авто-зума при фокусе в поле (font-size < 16px) ── */
@media (hover: none) and (pointer: coarse) {
    html:not(.strela-map-page) input:not([type="checkbox"]):not([type="radio"]):not([type="range"])
        :not([type="submit"]):not([type="button"]):not([type="reset"])
        :not([type="color"]):not([type="file"]):not([type="hidden"]),
    html:not(.strela-map-page) select,
    html:not(.strela-map-page) textarea,
    html:not(.strela-map-page) .modal input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
    html:not(.strela-map-page) .modal select,
    html:not(.strela-map-page) .modal textarea,
    html:not(.strela-map-page) [class*="modal"] input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
    html:not(.strela-map-page) [class*="modal"] select,
    html:not(.strela-map-page) [class*="modal"] textarea,
    html:not(.strela-map-page) .rent-form-body input,
    html:not(.strela-map-page) .rent-form-body select,
    html:not(.strela-map-page) .rent-form-body textarea {
        font-size: 16px !important;
    }
}

/* Fallback для узких экранов без coarse pointer */
@media (max-width: 767px) {
    html:not(.strela-map-page) input:not([type="checkbox"]):not([type="radio"]):not([type="range"])
        :not([type="submit"]):not([type="button"]):not([type="reset"])
        :not([type="color"]):not([type="file"]):not([type="hidden"]),
    html:not(.strela-map-page) select,
    html:not(.strela-map-page) textarea {
        font-size: 16px !important;
    }
}

/* View Transitions: navigation:auto отключён — используем собственный логотип-оверлей.
   @keyframes оставлены для возможного SPA в будущем. */

@keyframes vt-fade-out {
    from { opacity: 1; }
    to   { opacity: 0; }
}
@keyframes vt-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    @supports (selector(::view-transition-old(root))) {
        ::view-transition-old(root),
        ::view-transition-new(root) {
            animation: none;
        }
    }
}
