
/* ================================================

   TRAVEL CODE — DESIGN SYSTEM POLISH

   Единые токены, состояния, микроанимации

   ================================================ */



/* ===== DESIGN TOKENS ===== */

:root {

    --tc-radius-sm: 10px;

    --tc-radius-md: 16px;

    --tc-radius-lg: 20px;

    --tc-radius-xl: 28px;

    --tc-radius-pill: 999px;



    --tc-shadow-sm: 0 2px 8px rgba(8,28,51,0.06);

    --tc-shadow-md: 0 8px 24px rgba(8,28,51,0.08);

    --tc-shadow-lg: 0 16px 48px rgba(8,28,51,0.12);

    --tc-shadow-xl: 0 32px 80px rgba(8,28,51,0.16);

    --tc-shadow-orange: 0 8px 24px rgba(255,107,0,0.25);

    --tc-shadow-orange-lg: 0 20px 48px rgba(255,107,0,0.35);



    --tc-ease: cubic-bezier(0.22, 1, 0.36, 1);

    --tc-ease-in: cubic-bezier(0.4, 0, 1, 1);

    --tc-ease-out: cubic-bezier(0, 0, 0.2, 1);



    --tc-transition: all 0.28s cubic-bezier(0.22, 1, 0.36, 1);

    --tc-transition-fast: all 0.18s cubic-bezier(0.22, 1, 0.36, 1);

    --tc-transition-slow: all 0.45s cubic-bezier(0.22, 1, 0.36, 1);

}



/* ===== GLOBAL BUTTON SYSTEM ===== */

button, .btn, [class*="btn"], [class*="-btn"],

.h-btn, .header-btn, .h-search__btn,

.prof-next-goal__btn, .td-booking__btn {

    cursor: pointer;

    font-family: inherit;

    letter-spacing: -0.01em;

    -webkit-font-smoothing: antialiased;

}



/* Primary buttons */

.h-btn--white,

.header-btn--primary,

.h-search__btn {

    transition: transform 0.28s cubic-bezier(0.22,1,0.36,1),

                box-shadow 0.28s cubic-bezier(0.22,1,0.36,1) !important;

}



.h-btn--white:hover,

.header-btn--primary:hover,

.h-search__btn:hover {

    transform: translateY(-2px) !important;

}



/* ===== CARDS — UNIVERSAL HOVER ===== */

.h-tour-card,

.h-dest-card,

.h-blog-card,

.h-why-card,

.h-review,

.trust-card,

.tl-card,

.prof-ach,

.prof-stat-card,

.prof-wish-card {

    will-change: transform;

    backface-visibility: hidden;

}



/* ===== FORM INPUTS — PREMIUM ===== */

input[type="text"],

input[type="email"],

input[type="password"],

input[type="tel"],

input[type="number"],

input[type="date"],

select,

textarea {

    border-radius: var(--tc-radius-md) !important;

    border: 1.5px solid rgba(8,28,51,0.1) !important;

    padding: 0.75rem 1rem !important;

    font-size: 0.9rem !important;

    font-family: inherit !important;

    color: #081C33 !important;

    background: white !important;

    transition: border-color 0.2s ease, box-shadow 0.2s ease !important;

    outline: none !important;

    -webkit-appearance: none !important;

    appearance: none !important;

}



input:focus,

select:focus,

textarea:focus {

    border-color: #FF6B00 !important;

    box-shadow: 0 0 0 3px rgba(255,107,0,0.1) !important;

}



input::placeholder,

textarea::placeholder {

    color: #aaa !important;

    font-weight: 400 !important;

}



/* ===== LOADING STATES ===== */

@keyframes tcSkeleton {

    0% { background-position: -200% 0; }

    100% { background-position: 200% 0; }

}



.tc-loading {

    background: linear-gradient(90deg, #f0f0f0 25%, #e8e8e8 50%, #f0f0f0 75%);

    background-size: 200% 100%;

    animation: tcSkeleton 1.5s ease infinite;

    border-radius: var(--tc-radius-md);

}



/* ===== EMPTY STATES ===== */

.prof-empty {

    text-align: center;

    padding: 3rem 1rem;

    color: #aaa;

}



.prof-empty__visual .lucide {

    color: #ddd;

    opacity: 0.6;

}



.prof-empty h3 {

    font-size: 1.1rem;

    font-weight: 700;

    color: #999;

    margin-bottom: 0.5rem;

}



.prof-empty p {

    font-size: 0.85rem;

    color: #bbb;

    line-height: 1.6;

}



/* ===== SUCCESS STATES ===== */

.alert-success,

.messages .success,

[class*="success-msg"] {

    background: rgba(34,197,94,0.08) !important;

    border: 1.5px solid rgba(34,197,94,0.2) !important;

    border-radius: var(--tc-radius-md) !important;

    color: #16a34a !important;

    padding: 0.875rem 1.25rem !important;

    font-weight: 600 !important;

    font-size: 0.88rem !important;

}



/* ===== ERROR STATES ===== */

.alert-error,

.messages .error,

.errorlist,

[class*="error-msg"] {

    background: rgba(239,68,68,0.06) !important;

    border: 1.5px solid rgba(239,68,68,0.18) !important;

    border-radius: var(--tc-radius-md) !important;

    color: #dc2626 !important;

    padding: 0.875rem 1.25rem !important;

    font-weight: 600 !important;

    font-size: 0.88rem !important;

    list-style: none !important;

}



/* ===== LINKS ===== */

a {

    transition: color 0.2s ease, opacity 0.2s ease;

}



/* ===== SELECTION ===== */

::selection {

    background: rgba(255,107,0,0.15);

    color: #081C33;

}



/* ===== SCROLLBAR ===== */

::-webkit-scrollbar { width: 6px; height: 6px; }

::-webkit-scrollbar-track { background: transparent; }

::-webkit-scrollbar-thumb { background: rgba(8,28,51,0.15); border-radius: 3px; }

::-webkit-scrollbar-thumb:hover { background: rgba(8,28,51,0.25); }



/* ===== FOCUS VISIBLE ===== */

:focus-visible {

    outline: 2px solid #FF6B00 !important;

    outline-offset: 2px !important;

}



/* ===== TYPOGRAPHY POLISH ===== */

h1, h2, h3, h4, h5 {

    -webkit-font-smoothing: antialiased;

    text-rendering: optimizeLegibility;

    letter-spacing: -0.02em;

}



/* ===== BOOKING STATUS BADGES ===== */

.prof-badge--paid,

.prof-timeline__status--paid {

    background: rgba(34,197,94,0.1) !important;

    color: #16a34a !important;

    border: 1px solid rgba(34,197,94,0.2) !important;

}



.prof-badge--pending,

.prof-timeline__status--pending {

    background: rgba(245,158,11,0.1) !important;

    color: #d97706 !important;

    border: 1px solid rgba(245,158,11,0.2) !important;

}



.prof-badge--cancelled {

    background: rgba(239,68,68,0.08) !important;

    color: #dc2626 !important;

    border: 1px solid rgba(239,68,68,0.15) !important;

}



/* ===== HOVER STATES — LINKS ===== */

.h-link-btn {

    transition: color 0.2s ease, transform 0.25s cubic-bezier(0.22,1,0.36,1) !important;

}

.h-link-btn:hover {

    color: #FF6B00 !important;

    transform: translateX(4px) !important;

}



/* ===== TOUR CARDS WISHLIST ===== */

.h-tour-card__wish {

    transition: transform 0.25s cubic-bezier(0.22,1,0.36,1),

                background 0.2s ease !important;

}

.h-tour-card__wish:hover {

    transform: scale(1.15) !important;

    background: rgba(239,68,68,0.1) !important;

}



/* ===== SEARCH BAR ===== */

.h-search {

    transition: box-shadow 0.3s ease !important;

}

.h-search:focus-within {

    box-shadow: 0 0 0 3px rgba(255,107,0,0.1), 0 8px 32px rgba(8,28,51,0.1) !important;

}



/* ===== STAR RATINGS ===== */

.h-review__stars .lucide,

.td-review__stars .lucide {

    fill: #FF6B00 !important;

    color: #FF6B00 !important;

    transition: transform 0.2s ease !important;

}

.h-review:hover .h-review__stars .lucide {

    transform: scale(1.15) !important;

}



/* ===== PAGINATION ===== */

.pagination a,

.pagination span {

    border-radius: var(--tc-radius-sm) !important;

    transition: var(--tc-transition-fast) !important;

    font-weight: 600 !important;

}

.pagination a:hover {

    background: rgba(255,107,0,0.08) !important;

    color: #FF6B00 !important;

}



/* ===== FOOTER ===== */

.site-footer {

    border-top: 1px solid rgba(8,28,51,0.06) !important;

}



/* ===== MOBILE TOUCH STATES ===== */

@media (hover: none) {

    .h-tour-card:active,

    .h-dest-card:active,

    .h-blog-card:active {

        transform: scale(0.98) !important;

        transition: transform 0.1s ease !important;

    }



    button:active,

    .header-btn:active,

    .h-btn:active {

        transform: scale(0.96) !important;

        opacity: 0.9 !important;

    }

}



/* ===== PREFERS REDUCED MOTION ===== */

@media (prefers-reduced-motion: reduce) {

    *, *::before, *::after {

        animation-duration: 0.01ms !important;

        transition-duration: 0.01ms !important;

    }

}



/* ===== IMAGE RENDERING ===== */

img {

    -webkit-font-smoothing: antialiased;

    image-rendering: -webkit-optimize-contrast;

}



/* ===== SECTION HEADINGS ===== */

.h-title {

    line-height: 1.15 !important;

    letter-spacing: -0.03em !important;

}



.h-tag {

    letter-spacing: 0.01em !important;

    font-weight: 700 !important;

}



/* ===== CONSISTENT CARD SHADOWS ===== */

.h-tour-card,

.h-blog-card,

.h-why-card,

.h-review,

.trust-card,

.prof-ach,

.prof-stat-card {

    box-shadow: var(--tc-shadow-sm) !important;

}



.h-tour-card:hover,

.h-blog-card:hover,

.h-why-card:hover,

.h-review:hover,

.trust-card:hover {

    box-shadow: var(--tc-shadow-lg) !important;

}



/* ===== PAGE TRANSITIONS ===== */

.site-main {

    animation: tcFadeUp 500ms cubic-bezier(0.22,1,0.36,1) both;

}

@keyframes tcFadeUp {

    from { opacity: 0; transform: translateY(12px); }

    to   { opacity: 1; transform: translateY(0); }

}




/* ===== RADIUS УНИФИКАЦИЯ ===== */

/* Все карточки — 20px */

.h-tour-card, .h-blog-card, .h-why-card,

.h-review, .trust-card, .prof-ach,

.prof-stat-card, .prof-wish-card,

.td-booking, .tl-card {

    border-radius: 20px !important;

}



/* Маленькие элементы — 12px */

.h-tag, .td-review__rank-badge,

.td-review__title-badge, .prof-ach__rarity,

.sm-profile__title {

    border-radius: 12px !important;

}



/* Поля форм — 14px */

input[type="text"], input[type="email"],

input[type="password"], input[type="tel"],

input[type="date"], select, textarea {

    border-radius: 14px !important;

}



/* Кнопки — pill */

.h-btn, .header-btn,

.prof-next-goal__btn,

.h-search__btn {

    border-radius: 999px !important;

}



/* ===== ТЕНИ УНИФИКАЦИЯ ===== */

/* Убираем разнобой теней */

.h-tour-card { box-shadow: 0 2px 12px rgba(8,28,51,0.06) !important; }

.h-tour-card:hover { box-shadow: 0 16px 48px rgba(8,28,51,0.12) !important; }



.h-why-card { box-shadow: 0 2px 12px rgba(8,28,51,0.05) !important; }

.h-why-card:hover { box-shadow: 0 16px 40px rgba(8,28,51,0.1) !important; }



.h-review { box-shadow: 0 2px 12px rgba(8,28,51,0.05) !important; }

.h-review:hover { box-shadow: 0 12px 32px rgba(8,28,51,0.09) !important; }



.trust-card { box-shadow: 0 2px 12px rgba(8,28,51,0.05) !important; }

.trust-card:hover { box-shadow: 0 16px 40px rgba(8,28,51,0.1) !important; }



/* ===== ИКОНКИ — СТАНДАРТ ===== */

/* Все иконки Lucide наследуют цвет и размер */

.lucide { flex-shrink: 0; }



/* ===== ТЕКСТ — СТАНДАРТ ===== */

/* Нет жирного текста там где не нужно */

p { font-weight: 400; line-height: 1.7; }



/* Мета-информация */

.h-tour-card__dest,

.h-tour-card__info,

.prof-timeline__meta,

.td-review__meta {

    font-size: 0.78rem !important;

    color: #888 !important;

    font-weight: 500 !important;

}



/* ===== HOVER TRANSITIONS СТАНДАРТ ===== */

/* Все интерактивные карточки */

.h-tour-card, .h-dest-card, .h-blog-card,

.h-why-card, .h-review, .trust-card,

.tl-card, .prof-ach, .prof-stat-card {

    transition: transform 0.28s cubic-bezier(0.22,1,0.36,1),

                box-shadow 0.28s cubic-bezier(0.22,1,0.36,1),

                border-color 0.28s ease !important;

}



/* ===== КНОПКИ — СТАНДАРТ ===== */

/* Все primary кнопки одинаково поднимаются */

.header-btn--primary:hover,

.h-btn--white:hover,

.h-search__btn:hover,

.prof-next-goal__btn:hover {

    transform: translateY(-2px) !important;

}



/* ===== ПОИСК — POLISH ===== */

.h-search__select {

    font-weight: 500 !important;

    color: #333 !important;

}



/* ===== ПУСТЫЕ СОСТОЯНИЯ ===== */

.prof-empty,

.tl-empty,

[class*="empty"] {

    animation: tcFadeUp 0.5s cubic-bezier(0.22,1,0.36,1) both;

}



/* ===== SUCCESS / ERROR MESSAGES ===== */

.messages {

    position: fixed !important;

    bottom: 1.5rem !important;

    right: 1.5rem !important;

    z-index: 9999 !important;

    display: flex !important;

    flex-direction: column !important;

    gap: 0.5rem !important;

    max-width: 360px !important;

}



.messages li,

.messages .message {

    padding: 0.875rem 1.25rem !important;

    border-radius: 16px !important;

    font-weight: 600 !important;

    font-size: 0.85rem !important;

    box-shadow: 0 8px 32px rgba(8,28,51,0.12) !important;

    animation: tcFadeUp 0.4s cubic-bezier(0.22,1,0.36,1) both !important;

    backdrop-filter: blur(12px) !important;

}



.messages .success { background: rgba(34,197,94,0.95) !important; color: white !important; }

.messages .error   { background: rgba(239,68,68,0.95) !important; color: white !important; }

.messages .info    { background: rgba(8,28,51,0.92) !important;   color: white !important; }

.messages .warning { background: rgba(245,158,11,0.95) !important; color: white !important; }




/* === TRUST CARDS PREMIUM HOVER === */

.trust-card {

    transition: transform 0.6s cubic-bezier(0.22,1,0.36,1),

                box-shadow 0.6s cubic-bezier(0.22,1,0.36,1),

                background-color 0.6s ease,

                border-color 0.6s ease !important;

    will-change: transform;

}

.trust-card:hover {

    transform: translateY(-5px) !important;

    background-color: #13314F !important;

    border-color: rgba(255,138,51,0.35) !important;

    box-shadow: 0 22px 55px rgba(0,0,0,0.38), 0 0 0 1px rgba(255,138,51,0.10), 0 8px 30px rgba(255,107,0,0.18) !important;

}

.trust-card__icon .lucide {
    display: inline-block;
    transition: transform 0.6s cubic-bezier(0.22,1,0.36,1), filter 0.6s ease;
}

.trust-card:hover .trust-card__icon .lucide {

    transform: scale(1.12);

    filter: drop-shadow(0 4px 12px rgba(255,107,0,0.5));

}

@media (prefers-reduced-motion: reduce) {

    .trust-card, .trust-card:hover, .trust-card__icon, .trust-card:hover .trust-card__icon {

        transition: none !important;

        transform: none !important;

    }

}

/* === /TRUST CARDS PREMIUM HOVER === */

