* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body { background: #FFF9F2; color: #18211B; font-family: Manrope, system-ui, sans-serif; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
a { color: #C2410C; text-decoration: none; }
a:hover { color: #9A3412; }
input, button, select { font-family: inherit; }
input:focus { outline: none; }
button { touch-action: manipulation; }

[hidden] { display: none !important; }

@keyframes fadeUp { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes floatY { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-18px); } }
@keyframes floatY2 { 0%,100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(22px) rotate(6deg); } }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes pulseRing { 0% { box-shadow: 0 0 0 0 rgba(249,115,22,0.45); } 70% { box-shadow: 0 0 0 18px rgba(249,115,22,0); } 100% { box-shadow: 0 0 0 0 rgba(249,115,22,0); } }
@keyframes tick { from { opacity: 0.35; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@keyframes shine { from { background-position: 0% 50%; } to { background-position: 200% 50%; } }

/* --- Кнопки и интерактивные элементы: базовый вид задаётся инлайн-стилями в разметке,
   здесь только :hover/:focus, которые инлайн-атрибутами не выразить --- */

.btn-cta-header:hover { background: #F97316; }

.input-field:focus { border-color: #F97316; background: #FFFFFF; }

.btn-orange-lift:hover { transform: translateY(-2px); background: #EA580C; }
.btn-orange-lift-only:hover { transform: translateY(-2px); }
.btn-outline-orange:hover { background: #F97316; color: #FFFFFF; }
.btn-dark-hover-orange:hover { background: #F97316; }
.btn-orange-hover-dark:hover { background: #EA580C; }

.catalog-card { transition: transform 0.25s ease, box-shadow 0.25s ease; }
.catalog-card:hover { transform: translateY(-6px); box-shadow: 0 20px 44px rgba(94,109,99,0.14); }

.btn-chip-cta:hover { background: #F97316; color: #FFFFFF; }

.service-card { transition: transform 0.25s ease, box-shadow 0.25s ease; }
.service-card:hover { transform: translateY(-5px); box-shadow: 0 18px 40px rgba(94,109,99,0.12); }

.modal-close:hover { background: #E9DCCC; }

.filter-btn { transition: all 0.2s ease; }
.filter-btn:not(.is-active):hover { border-color: #F97316; }

/* --- FAQ: нативный <details>/<summary>, раскрытие без JS --- */
.faq-item summary { cursor: pointer; list-style: none; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item .faq-sign::before { content: '+'; }
.faq-item[open] .faq-sign::before { content: '\2212'; }
.faq-item .faq-answer { animation: fadeIn 0.3s ease; }

/* --- Каталог: фильтрация карточек на клиенте без повторного запроса --- */
.catalog-card[data-filtered-out] { display: none; }

.property-photo-placeholder {
  height: 168px; background: repeating-linear-gradient(135deg, #F1E7DB 0 10px, #FBF3E9 10px 20px);
  display: grid; place-items: center; position: relative;
}
.property-photo {
  height: 168px; width: 100%; object-fit: cover; display: block; position: relative;
}

@media (max-width: 640px) {
  .hide-mobile { display: none !important; }
}
