/* =================================================================
   Form placeholder colour — single source of truth
   =================================================================
   public/style/main.css and public/panel/web/main.css are build
   artefacts of the separate frontend repo, so their per-component
   placeholder rules cannot be fixed at source from here. They had
   drifted to 13 different colours, several of them near-black
   (#212324), which read as a filled value rather than a hint.

   This file re-states every drifted selector against one token.
   Load it after @stack('css') so it also wins over the per-page
   bundles (plp.bundle.css and friends).

   Deliberately NOT normalised: .global-search-trigger__input — the
   nav/home hero search sits on a dark image and needs a light
   placeholder to stay legible.
   ================================================================= */

:root {
    --vw-placeholder: #999999;
}

input::-moz-placeholder,
textarea::-moz-placeholder {
    color: var(--vw-placeholder, #999999);
    opacity: 1;
}

input::placeholder,
textarea::placeholder {
    color: var(--vw-placeholder, #999999);
    opacity: 1;
}

/* --- Component rules from the generated builds (class-level, so !important) --- */

.vrf-input::placeholder,
.vrf-input:disabled::placeholder,
.vrf-dropdown::placeholder,
.form__input::placeholder,
.global-search-modal__search-input::placeholder,
.detail-sidebar__date-field-input::placeholder,
.listing-sidebar__filter-location__filter-group__input::placeholder,
.listing-sidebar__filter__range-input::placeholder,
.inquiry-form-event__budget-input::placeholder,
.venue-search-input::placeholder,
.places-search::placeholder,
.input-outline-dark::placeholder,
.input-outline::placeholder,
.textarea::placeholder,
.textarea-outline::placeholder,
.outline__input::placeholder,
.password__input::placeholder,
.inquiry-decline-modal__field-textarea::placeholder,
.inquiry-upload-proposal-modal__field-textarea::placeholder,
.otp-input-container input::placeholder,
.date-picker__placeholder--input::placeholder,
.contact-input-box input:not([type='submit'])::placeholder,
.contact-input-box textarea::placeholder,
.agency-input-box input:not([type='submit'], [type='checkbox'])::placeholder,
.agency-input-box textarea::placeholder,
.owner-input-box input:not([type='submit'])::placeholder,
.owner-input-box textarea::placeholder,
.csd-input::placeholder,
.ai-chat__input::placeholder,
.ai-location-popup__search-input::placeholder,
.mc-rename-field__input::placeholder,
.inquiry-modal__field-textarea::placeholder,
.decline-modal-textarea::placeholder,
.notes-section__textarea::placeholder,
.avf-input::placeholder,
.filter-toolbar__search-input::placeholder {
    color: var(--vw-placeholder, #999999) !important;
    opacity: 1 !important;
}

.vrf-input::-moz-placeholder,
.vrf-dropdown::-moz-placeholder,
.form__input::-moz-placeholder,
.outline__input::-moz-placeholder,
.password__input::-moz-placeholder,
.input-outline::-moz-placeholder,
.textarea::-moz-placeholder,
.textarea-outline::-moz-placeholder,
.places-search::-moz-placeholder,
.inquiry-decline-modal__field-textarea::-moz-placeholder,
.inquiry-upload-proposal-modal__field-textarea::-moz-placeholder,
.filter-toolbar__search-input::-moz-placeholder {
    color: var(--vw-placeholder, #999999) !important;
    opacity: 1 !important;
}

/* Two-class selectors need matching specificity to win. */

.auth-form__input.iti__tel-input::placeholder,
.avf-phone-wrap .iti__tel-input::placeholder,
.listing-sidebar__filter__range-input:not(input) input::placeholder,
.home__range-input:not(input) input::placeholder,
.home__range-input[input]::placeholder,
.selectize-control.single .selectize-input input::placeholder,
.filter-toolbar__chip-dropdown .listing-sidebar__filter__range-input input::placeholder,
.filter-toolbar__chip-dropdown .listing-sidebar__filter-location__filter-group__input::placeholder {
    color: var(--vw-placeholder, #999999) !important;
    opacity: 1 !important;
}

/* Custom selects fake their placeholder with a ::after pseudo-element.
   The [data-select-options-text] state below is the *selected* value,
   which stays black — only the empty state is a placeholder. */

.input-outline-select-wrapper:after,
.avf-input--placeholder {
    color: var(--vw-placeholder, #999999) !important;
}

.input-outline-select-wrapper[data-select-options-text]:not([data-fake-placeholder]):after {
    color: #000000 !important;
}

/* --- Tailwind placeholder utilities baked into the builds ---
       Vendor-prefixed pseudo-elements get their own rule: an engine that does
       not recognise one member of a selector list discards the whole rule. */

.placeholder\:text-neutral-400::placeholder,
.placeholder\:text-gray-2::placeholder,
.placeholder\:text-\[\#555\]::placeholder,
.placeholder\:text-\[\#898989\]::placeholder,
.placeholder\:text-\[\#999999\]::placeholder,
.placeholder\:text-\[\#adadad\]::placeholder,
.placeholder\:text-\[\#464646\]::placeholder,
.placeholder\:text-\[\#D2D2D2\]::placeholder {
    color: var(--vw-placeholder, #999999) !important;
    opacity: 1 !important;
}

.placeholder\:text-neutral-400::-moz-placeholder,
.placeholder\:text-gray-2::-moz-placeholder {
    color: var(--vw-placeholder, #999999) !important;
    opacity: 1 !important;
}

/* --- Admin (sb-admin-2) --- */

.form-control::placeholder {
    color: var(--vw-placeholder, #999999);
    opacity: 1;
}

.form-control::-moz-placeholder {
    color: var(--vw-placeholder, #999999);
    opacity: 1;
}

.form-control::-webkit-input-placeholder {
    color: var(--vw-placeholder, #999999);
    opacity: 1;
}

/* --- Preserve the "hide the hint on focus" behaviour these builds rely on.
       Must be restated after the !important rules above. --- */

.form__input.form__input-center:focus::placeholder,
.inquiry-form-event__budget-input.form__input-center:focus::placeholder,
.otp-input-container input:focus::placeholder {
    color: transparent !important;
}
