/* SHINE — ТЗ: ніжна рожева гама, мінімалізм, картки, плавні переходи */
:root {
    --shine-rose: #ff4fa3;
    --shine-rose-deep: #c2185b;
    --shine-powder: #fff5fb;
    --shine-blush: #ffe8f2;
    --shine-graphite: #2b2230;
    --shine-muted: #6b5a66;
    --shine-sidebar-width: 17.5rem;
    --shine-radius: 1rem;
    --shine-radius-sm: 0.75rem;
    --shine-shadow: 0 8px 32px rgba(43, 34, 48, 0.08);
    --shine-shadow-hover: 0 14px 40px rgba(255, 79, 163, 0.18);
    /* 3D hero — premium (зв’язок з картками послуг) */
    --shine-hero-radius: calc(var(--shine-radius) + 0.375rem);
    --shine-hero-radius-sm: calc(var(--shine-radius-sm) + 0.25rem);
    --shine-hero-perspective: 1180px;
    --shine-hero-rose-glow: rgba(255, 79, 163, 0.22);
}

body {
    background: linear-gradient(180deg, #fffafd 0%, #faf7fb 40%, #f6f2f7 100%);
    color: var(--shine-graphite);
}

.shine-app-root {
    --bs-primary: var(--shine-rose);
    --bs-primary-rgb: 255, 79, 163;
}

/* Бічне меню — пункти */
.shine-nav-link.nav-link {
    border-radius: var(--shine-radius-sm);
    color: var(--shine-graphite) !important;
    font-weight: 500;
    padding: 0.65rem 0.85rem !important;
    transition: background 0.2s ease, color 0.2s ease, transform 0.15s ease;
}

.shine-nav-link.nav-link:hover {
    background: rgba(255, 79, 163, 0.08);
    color: var(--shine-rose-deep) !important;
}

.shine-nav-link.nav-link.active {
    background: linear-gradient(135deg, rgba(255, 79, 163, 0.2), rgba(248, 183, 216, 0.38)) !important;
    color: #6b0a3d !important;
    box-shadow: 0 2px 12px rgba(255, 79, 163, 0.18);
}

.shine-sidebar-logout:hover {
    background: rgba(220, 53, 69, 0.08) !important;
}

.shine-menu-btn {
    min-width: 44px;
    min-height: 44px;
}

.shine-nav-divider {
    border-top: 1px solid rgba(43, 34, 48, 0.08);
}

/* Бічне меню та мобільний drawer — контраст як у верхнього бару хедера */
.shine-sidebar .shine-nav-link.nav-link,
.shine-nav-offcanvas .shine-nav-link.nav-link {
    color: rgba(255, 255, 255, 0.85) !important;
}

.shine-sidebar .shine-nav-link.nav-link:hover,
.shine-nav-offcanvas .shine-nav-link.nav-link:hover {
    background: rgba(255, 255, 255, 0.08);
    color: #fff !important;
}

.shine-sidebar .shine-nav-link.nav-link.active,
.shine-nav-offcanvas .shine-nav-link.nav-link.active {
    background: linear-gradient(125deg, rgba(255, 48, 130, 0.55) 0%, rgba(255, 110, 185, 0.48) 45%, rgba(210, 70, 150, 0.42) 100%) !important;
    color: #fff !important;
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.22),
        0 6px 22px rgba(255, 30, 110, 0.38),
        inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.shine-sidebar .shine-sidebar-logout:hover,
.shine-nav-offcanvas .shine-sidebar-logout:hover {
    background: rgba(220, 53, 69, 0.22) !important;
    color: #fff !important;
}

.shine-sidebar .shine-nav-divider,
.shine-nav-offcanvas .shine-nav-divider {
    border-top-color: rgba(255, 255, 255, 0.14);
}


/* Картки послуг / товарів */
.shine-service-card {
    border: 1px solid rgba(255, 79, 163, 0.12);
    border-radius: var(--shine-radius);
    overflow: hidden;
    background: #fff;
    box-shadow: var(--shine-shadow);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    height: 100%;
}

.shine-service-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shine-shadow-hover);
}

.shine-service-card .shine-service-img {
    aspect-ratio: 4 / 3;
    object-fit: cover;
    width: 100%;
}

.shine-service-meta {
    font-size: 0.85rem;
    color: var(--shine-muted);
}

/* Головна — блок «Послуги»: 3D-картки + рожева гама */
.shine-home-services {
    background:
        radial-gradient(ellipse 100% 70% at 50% -15%, rgba(255, 79, 163, 0.16), transparent 58%),
        linear-gradient(180deg, #fffafc 0%, #fff5f9 42%, #fef6fb 100%);
    border-top: 1px solid rgba(255, 79, 163, 0.1);
    border-bottom: 1px solid rgba(255, 79, 163, 0.08);
}

.shine-home-services .section-title p {
    color: var(--shine-muted);
    max-width: 42rem;
    margin-left: auto;
    margin-right: auto;
}

.shine-home-services .row.justify-content-center {
    align-items: stretch;
}

.shine-home-services .shine-home-service-card.service-item {
    height: 100%;
    min-height: 0;
}

.shine-home-service-card {
    position: relative;
    border-radius: var(--shine-radius);
    border: 1px solid rgba(255, 79, 163, 0.22);
    background: linear-gradient(165deg, #ffffff 0%, #fff9fc 42%, #fff2f8 100%);
    box-shadow:
        0 2px 4px rgba(43, 34, 48, 0.05),
        0 10px 26px rgba(255, 79, 163, 0.14),
        0 26px 52px rgba(43, 34, 48, 0.07),
        inset 0 1px 0 rgba(255, 255, 255, 0.95);
    transform-style: preserve-3d;
    transform: perspective(960px) translateZ(0);
    transition:
        transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 0.45s ease,
        border-color 0.35s ease;
    isolation: isolate;
}

.shine-home-service-card::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.4s ease;
    background: radial-gradient(130% 85% at 50% 0%, rgba(255, 79, 163, 0.2), transparent 62%);
    z-index: 1;
}

.shine-home-service-card:hover {
    transform: perspective(960px) translateY(-14px) translateZ(20px) rotateX(5deg);
    border-color: rgba(255, 79, 163, 0.48);
    box-shadow:
        0 6px 12px rgba(43, 34, 48, 0.07),
        0 20px 44px rgba(255, 79, 163, 0.26),
        0 44px 88px rgba(43, 34, 48, 0.11),
        inset 0 1px 0 rgba(255, 255, 255, 1);
}

.shine-home-service-card:hover::after {
    opacity: 1;
}

.shine-home-service-media {
    overflow: hidden;
    border-radius: calc(var(--shine-radius) - 1px) calc(var(--shine-radius) - 1px) 0 0;
    aspect-ratio: 4 / 3;
    background: linear-gradient(145deg, #ffe8f2, #fff5fb);
}

.shine-home-service-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1), filter 0.45s ease;
    filter: saturate(1.03);
}

.shine-home-service-media::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(180deg, transparent 35%, rgba(255, 79, 163, 0.14) 100%);
    opacity: 0.9;
}

.shine-home-service-card:hover .shine-home-service-img {
    transform: scale(1.08);
    filter: saturate(1.1) brightness(1.04);
}

.shine-home-service-body {
    position: relative;
    z-index: 2;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.99) 0%, rgba(255, 249, 252, 0.97) 100%);
    border-top: 1px solid rgba(255, 79, 163, 0.12);
    border-radius: 0 0 calc(var(--shine-radius) - 1px) calc(var(--shine-radius) - 1px);
}

.shine-home-services .shine-home-service-body {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.shine-home-service-body h5 {
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 600;
    color: var(--shine-graphite);
}

.shine-home-services .shine-home-service-body h5 {
    flex-shrink: 0;
}

.shine-home-service-body p {
    color: var(--shine-muted);
    font-size: 0.9375rem;
    line-height: 1.55;
}

.shine-home-services .shine-home-service-body p {
    flex: 1 1 auto;
    min-height: 0;
}

.shine-home-services .shine-home-service-card .btn-buy {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-top: auto;
    flex-shrink: 0;
    align-self: center;
    text-decoration: none;
    border: 1px solid rgba(255, 255, 255, 0.45);
    background: linear-gradient(145deg, #ff1f7a 0%, #ff3d94 42%, #ff7ec4 100%);
    color: #fff !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.45),
        0 4px 14px rgba(255, 30, 130, 0.4),
        0 10px 28px rgba(255, 65, 160, 0.36);
    transition: transform 0.25s ease, filter 0.25s ease, box-shadow 0.25s ease;
}

.shine-home-services .shine-home-service-card .btn-buy:hover {
    color: #fff !important;
    filter: brightness(1.06) saturate(1.05);
    transform: translateY(-2px);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.55),
        0 8px 22px rgba(255, 25, 125, 0.5),
        0 16px 36px rgba(255, 75, 165, 0.4);
}

@media (prefers-reduced-motion: reduce) {
    .shine-home-service-card,
    .shine-home-service-card:hover,
    .shine-home-service-img {
        transform: none !important;
        transition: none;
    }

    .shine-home-service-card::after {
        opacity: 0;
    }
}

/* Головна — блок «Команда»: той самий 3D + рожева гама, портретне фото */
.shine-home-team {
    background:
        radial-gradient(ellipse 90% 55% at 50% -12%, rgba(255, 79, 163, 0.12), transparent 56%),
        linear-gradient(180deg, #fffefc 0%, #faf7fb 48%, #fff8fc 100%);
    border-top: 1px solid rgba(255, 79, 163, 0.08);
    border-bottom: 1px solid rgba(255, 79, 163, 0.08);
}

.shine-home-team .section-title p {
    color: var(--shine-muted);
    max-width: 40rem;
    margin-left: auto;
    margin-right: auto;
}

.shine-home-team .shine-home-team-card .shine-home-service-media {
    aspect-ratio: 3 / 4;
}

/* Головна — блок «Партнери»: luxury glass, градієнт, swipe на мобільних */
.shine-home-partners {
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(ellipse 100% 55% at 50% -15%, rgba(255, 79, 163, 0.18), transparent 58%),
        linear-gradient(180deg, #fff6fa 0%, #fff0f5 48%, #fef8fb 100%);
    border-top: 1px solid rgba(255, 79, 163, 0.1);
    border-bottom: 1px solid rgba(255, 79, 163, 0.09);
}

.shine-home-partners::before {
    content: "";
    position: absolute;
    width: min(520px, 90vw);
    height: min(520px, 90vw);
    right: -12%;
    top: 35%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 182, 213, 0.35) 0%, transparent 68%);
    pointer-events: none;
    filter: blur(2px);
    opacity: 0.4;
}

.shine-home-partners .container {
    position: relative;
    z-index: 1;
}

.shine-home-partners .section-title p {
    color: var(--shine-muted);
    max-width: 44rem;
    margin-left: auto;
    margin-right: auto;
}

.shine-home-partners .section-title h3 {
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 600;
    color: var(--shine-graphite);
}

/* Горизонтальний snap-скрол на планшетах і мобільних */
@media (max-width: 991.98px) {
    .shine-home-partners .shine-home-partners-row {
        flex-wrap: nowrap;
        justify-content: flex-start;
        overflow-x: auto;
        overflow-y: visible;
        scroll-snap-type: x mandatory;
        scroll-padding-inline: 1rem;
        gap: 1rem;
        padding: 0.35rem 0.75rem 0.85rem;
        margin-left: calc(-0.5 * var(--bs-gutter-x, 0.75rem));
        margin-right: calc(-0.5 * var(--bs-gutter-x, 0.75rem));
        padding-left: max(0.75rem, env(safe-area-inset-left, 0px));
        padding-right: max(0.75rem, env(safe-area-inset-right, 0px));
        -webkit-overflow-scrolling: touch;
        overscroll-behavior-x: contain;
    }

    .shine-home-partners .shine-home-partners-row > .shine-home-partner-col {
        flex: 0 0 min(82vw, 300px) !important;
        width: min(82vw, 300px) !important;
        max-width: min(82vw, 300px) !important;
        scroll-snap-align: center;
    }
}

.shine-home-partner-card,
.shine-brand-card {
    position: relative;
    display: flex;
    flex-direction: column;
    border-radius: calc(var(--shine-radius) + 2px);
    border: 1px solid rgba(255, 255, 255, 0.75);
    background: rgba(255, 255, 255, 0.68);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    box-shadow:
        0 2px 6px rgba(43, 34, 48, 0.05),
        0 12px 32px rgba(255, 79, 163, 0.12),
        0 1px 0 rgba(255, 255, 255, 0.9) inset;
    transform: translateZ(0) scale(1);
    transition:
        transform 0.38s cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 0.38s ease,
        border-color 0.35s ease;
    isolation: isolate;
}

.shine-home-partner-card::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.38s ease;
    background: radial-gradient(110% 75% at 50% 0%, rgba(255, 182, 193, 0.45), transparent 62%);
    z-index: 0;
}

.shine-home-partner-card:hover,
.shine-brand-card:hover {
    transform: translateY(-10px) scale(1.02);
    border-color: rgba(255, 182, 193, 0.85);
    box-shadow:
        0 10px 28px rgba(255, 182, 193, 0.38),
        0 22px 48px rgba(255, 79, 163, 0.18),
        0 4px 16px rgba(43, 34, 48, 0.06);
}

.shine-home-partner-card:hover::after {
    opacity: 1;
}

.shine-home-partner-card-inner {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    flex: 1;
    padding: 0.35rem 0.5rem 0.65rem;
}

.shine-home-partner-logo-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.65rem 0.85rem 0.35rem;
}

.shine-home-partner-logo {
    width: clamp(100px, 26vw, 120px);
    height: clamp(100px, 26vw, 120px);
    object-fit: contain;
    transition: transform 0.42s cubic-bezier(0.22, 1, 0.36, 1), filter 0.35s ease;
    filter: drop-shadow(0 2px 8px rgba(43, 34, 48, 0.08));
}

.shine-home-partner-card:hover .shine-home-partner-logo,
.shine-brand-card:hover .shine-home-partner-logo {
    transform: scale(1.08);
    filter: drop-shadow(0 6px 16px rgba(255, 79, 163, 0.25));
}

.shine-home-partner-copy {
    text-align: center;
    padding: 0.65rem 0.85rem 0.85rem;
    margin-top: 0.15rem;
    border-top: 1px solid rgba(255, 79, 163, 0.12);
}

.shine-home-partner-name {
    display: block;
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 600;
    font-size: 1.1rem;
    letter-spacing: 0.04em;
    color: var(--shine-graphite);
    margin-bottom: 0.4rem;
}

.shine-home-partner-tagline {
    display: block;
    font-size: 0.8125rem;
    line-height: 1.5;
    color: var(--shine-muted);
}

/* Довіра під брендами */
.shine-home-partners-trust {
    max-width: 52rem;
    margin-left: auto;
    margin-right: auto;
}

.shine-home-trust-list {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
}

@media (min-width: 768px) {
    .shine-home-trust-list {
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
        gap: 0.75rem 1.25rem;
    }
}

.shine-home-trust-item {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    font-size: 0.875rem;
    line-height: 1.45;
    color: var(--shine-muted);
    padding: 0.55rem 0.85rem;
    border-radius: var(--shine-radius-sm);
    background: rgba(255, 255, 255, 0.55);
    border: 1px solid rgba(255, 79, 163, 0.12);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

@media (min-width: 768px) {
    .shine-home-trust-item {
        flex: 1 1 calc(33.333% - 1rem);
        min-width: 12rem;
        max-width: 17rem;
        justify-content: center;
        text-align: center;
        flex-direction: column;
        align-items: center;
    }
}

.shine-home-trust-icon {
    flex-shrink: 0;
    color: var(--shine-rose);
    font-size: 1.1rem;
    line-height: 1;
}

@media (min-width: 768px) {
    .shine-home-trust-icon {
        margin-bottom: 0.15rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .shine-home-partner-card,
    .shine-brand-card,
    .shine-home-partner-card:hover,
    .shine-brand-card:hover,
    .shine-home-partner-logo {
        transform: none !important;
        transition: none;
    }

    .shine-home-partner-card::after {
        opacity: 0;
    }

    .shine-3d-hero:hover .shine-3d-stage,
    .shine-3d-hero:hover .shine-3d-slide.is-active img {
        transform: none !important;
    }

    .shine-3d-slide {
        transition: opacity 0.35s ease !important;
    }

    .shine-3d-slide.is-active,
    .shine-3d-slide.is-prev,
    .shine-3d-slide.is-next {
        transform: none !important;
    }

    .shine-3d-slide.is-prev,
    .shine-3d-slide.is-next {
        opacity: 0 !important;
    }
}

.shine-page-hero {
    background: linear-gradient(135deg, rgba(255, 79, 163, 0.08), rgba(248, 183, 216, 0.15));
    border-radius: var(--shine-radius);
    padding: clamp(1.5rem, 4vw, 2.5rem);
    margin-bottom: 1.5rem;
}

/* Відгуки */
.shine-review-card {
    border-radius: var(--shine-radius);
    border: 1px solid rgba(255, 79, 163, 0.1);
    background: #fff;
    box-shadow: var(--shine-shadow);
    transition: box-shadow 0.25s ease, transform 0.2s ease;
    height: 100%;
}

.shine-review-card:hover {
    box-shadow: var(--shine-shadow-hover);
    transform: translateY(-2px);
}

/* 3D hero — premium beauty (shine-hero-carousel): карусель + тіні як у карток послуг */
.shine-3d-hero.shine-hero-carousel {
    --shine-hero-h: clamp(292px, 68vw, 460px);
    position: relative;
    isolation: isolate;
    perspective: var(--shine-hero-perspective);
    perspective-origin: 50% 42%;
    width: 100%;
    height: var(--shine-hero-h);
    min-height: var(--shine-hero-h);
    border-radius: var(--shine-hero-radius-sm);
    overflow: hidden;
    background:
        radial-gradient(ellipse 85% 55% at 100% 0%, rgba(255, 182, 213, 0.35), transparent 52%),
        radial-gradient(ellipse 70% 50% at 0% 100%, rgba(255, 79, 163, 0.18), transparent 55%),
        linear-gradient(165deg, #16141c 0%, #221820 45%, #1a1520 100%);
    box-shadow:
        0 2px 4px rgba(43, 34, 48, 0.06),
        0 12px 32px var(--shine-hero-rose-glow),
        0 28px 56px rgba(43, 34, 48, 0.12),
        0 48px 96px rgba(255, 79, 163, 0.1),
        inset 0 1px 0 rgba(255, 255, 255, 0.12);
    transition: box-shadow 0.5s ease;
}

.shine-3d-hero.shine-hero-carousel:hover {
    box-shadow:
        0 4px 8px rgba(43, 34, 48, 0.08),
        0 16px 40px rgba(255, 79, 163, 0.28),
        0 36px 72px rgba(43, 34, 48, 0.14),
        0 56px 110px rgba(255, 95, 162, 0.14),
        inset 0 1px 0 rgba(255, 255, 255, 0.16);
}

/* Внутрішнє «скло» — рамка-світло */
.shine-3d-hero.shine-hero-carousel::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 4;
    border-radius: inherit;
    pointer-events: none;
    box-shadow:
        inset 0 0 0 1px rgba(255, 255, 255, 0.12),
        inset 0 1px 0 rgba(255, 255, 255, 0.22),
        inset 0 -32px 64px rgba(255, 79, 163, 0.07);
}

/* Віньєтка + читабельність тексту зліва */
.shine-hero-carousel::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 3;
    border-radius: inherit;
    pointer-events: none;
    background:
        radial-gradient(ellipse 95% 85% at 12% 48%, rgba(22, 14, 26, 0.88) 0%, rgba(22, 14, 26, 0.45) 48%, transparent 72%),
        linear-gradient(
            103deg,
            rgba(18, 12, 22, 0.72) 0%,
            rgba(18, 12, 22, 0.38) 44%,
            rgba(255, 120, 180, 0.07) 88%,
            rgba(255, 245, 252, 0.12) 100%
        );
}

.shine-3d-stage {
    position: relative;
    z-index: 0;
    width: 100%;
    height: var(--shine-hero-h);
    min-height: var(--shine-hero-h);
    transform-style: preserve-3d;
    transform: translateZ(0);
    transition: transform 0.75s cubic-bezier(0.22, 1, 0.36, 1);
}

.shine-3d-hero.shine-hero-carousel:hover .shine-3d-stage {
    transform: translateZ(0) rotateX(1.65deg);
}

.shine-3d-slide {
    position: absolute;
    inset: 0;
    border-radius: var(--shine-hero-radius-sm);
    overflow: hidden;
    opacity: 0;
    transform: rotateY(52deg) translateZ(-200px) translateY(8px) scale(0.86);
    transform-origin: center center;
    transition:
        opacity 0.55s ease,
        transform 0.72s cubic-bezier(0.22, 1, 0.36, 1),
        filter 0.5s ease,
        box-shadow 0.5s ease;
    pointer-events: none;
    box-shadow:
        0 8px 24px rgba(0, 0, 0, 0.18),
        0 28px 64px rgba(0, 0, 0, 0.22);
    backface-visibility: hidden;
}

.shine-3d-slide::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
    border-radius: inherit;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.16) 0%, transparent 38%, transparent 62%, rgba(0, 0, 0, 0.12) 100%);
    opacity: 0.85;
}

.shine-3d-slide.is-active {
    opacity: 1;
    transform: rotateY(0deg) translateZ(28px) translateY(0) scale(1);
    pointer-events: auto;
    z-index: 2;
    filter: saturate(1.05) brightness(1.02);
    box-shadow:
        0 6px 12px rgba(0, 0, 0, 0.12),
        0 22px 52px rgba(0, 0, 0, 0.22),
        0 40px 80px rgba(255, 79, 163, 0.16),
        inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.shine-3d-slide.is-prev {
    opacity: 0.38;
    transform: rotateY(-40deg) translateZ(-110px) translateY(10px) scale(0.8);
    z-index: 1;
    filter: brightness(0.9) saturate(0.92);
}

.shine-3d-slide.is-next {
    opacity: 0.38;
    transform: rotateY(40deg) translateZ(-110px) translateY(10px) scale(0.8);
    z-index: 1;
    filter: brightness(0.9) saturate(0.92);
}

.shine-3d-slide img {
    position: relative;
    z-index: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transform: scale(1);
    transition: transform 0.85s cubic-bezier(0.22, 1, 0.36, 1);
}

.shine-3d-hero.shine-hero-carousel:hover .shine-3d-slide.is-active img {
    transform: scale(1.045);
}

.shine-3d-overlay.shine-hero-overlay {
    position: absolute;
    inset: 0;
    z-index: 5;
    background: none;
    pointer-events: none;
}

.shine-hero-overlay .shine-hero-cta-wrap {
    pointer-events: auto;
}

.shine-hero-content {
    color: #fff;
    text-shadow: 0 1px 18px rgba(0, 0, 0, 0.35);
}

.shine-hero-subtitle {
    display: inline-block;
    font-size: 0.72rem;
    letter-spacing: 0.26em;
    text-transform: uppercase;
    margin-bottom: 0.65rem;
    padding: 0.35rem 0.65rem 0.35rem 0.75rem;
    border-radius: 999px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.95);
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.18);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

.shine-hero-title {
    font-family: "Playfair Display", Georgia, serif;
    font-size: clamp(1.85rem, 4.2vw, 2.75rem);
    line-height: 1.08;
    font-weight: 600;
    margin: 0 0 0.75rem;
    color: #fff;
    letter-spacing: -0.02em;
}

.shine-hero-text {
    font-size: clamp(0.9rem, 1.35vw, 1.05rem);
    line-height: 1.58;
    font-weight: 400;
    color: rgba(255, 255, 255, 0.88);
    margin: 0 0 1.35rem;
    max-width: 26rem;
}

.shine-hero-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.8rem 1.85rem;
    border-radius: 999px;
    background: linear-gradient(145deg, #ff1f7a 0%, #ff3d94 38%, #ff6eb8 72%, #ffa3d6 100%);
    color: #fff !important;
    font-weight: 700;
    font-size: 0.95rem;
    text-decoration: none;
    border: 1px solid rgba(255, 255, 255, 0.5);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.5),
        0 2px 0 rgba(180, 20, 95, 0.45),
        0 8px 26px rgba(255, 30, 130, 0.55),
        0 18px 44px rgba(255, 65, 160, 0.42);
    transition: transform 0.22s ease, filter 0.22s ease, box-shadow 0.22s ease;
}

.shine-hero-btn:hover {
    color: #fff !important;
    filter: brightness(1.08) saturate(1.05);
    transform: translateY(-2px);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.58),
        0 3px 0 rgba(180, 20, 95, 0.35),
        0 12px 34px rgba(255, 25, 125, 0.62),
        0 26px 52px rgba(255, 75, 165, 0.48);
}

.shine-3d-nav-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 6;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.45);
    background: rgba(255, 255, 255, 0.78);
    color: var(--shine-rose);
    box-shadow:
        0 2px 4px rgba(43, 34, 48, 0.06),
        0 8px 22px rgba(255, 79, 163, 0.15);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 0.22s ease, transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}

.shine-3d-nav-btn:hover {
    background: rgba(255, 255, 255, 0.95);
    border-color: rgba(255, 255, 255, 0.75);
    transform: translateY(-50%) scale(1.06);
    box-shadow:
        0 4px 10px rgba(43, 34, 48, 0.08),
        0 12px 28px rgba(255, 79, 163, 0.22);
}

.shine-3d-nav-btn:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.9);
    outline-offset: 3px;
}

.shine-3d-nav-btn.prev {
    left: clamp(0.65rem, 2.5vw, 1.15rem);
}

.shine-3d-nav-btn.next {
    right: clamp(0.65rem, 2.5vw, 1.15rem);
}

.shine-3d-nav-btn .bi {
    font-size: 1.15rem;
    line-height: 1;
}

.shine-3d-dots {
    position: absolute;
    bottom: clamp(0.85rem, 2.5vw, 1.15rem);
    left: 50%;
    transform: translateX(-50%);
    z-index: 6;
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.35rem 0.55rem;
    border-radius: 999px;
    background: rgba(22, 14, 26, 0.35);
    border: 1px solid rgba(255, 255, 255, 0.12);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
}

.shine-3d-dot {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    border: none;
    padding: 0;
    cursor: pointer;
    background: rgba(255, 255, 255, 0.55);
    opacity: 0.75;
    transition: width 0.3s ease, opacity 0.25s ease, border-radius 0.3s ease, background 0.25s ease, transform 0.2s ease;
}

.shine-3d-dot:hover {
    opacity: 1;
    transform: scale(1.08);
}

.shine-3d-dot.active {
    width: 1.65rem;
    border-radius: 999px;
    background: linear-gradient(90deg, #ff5fa2, #ffb8dc);
    opacity: 1;
    box-shadow: 0 0 14px rgba(255, 95, 162, 0.55);
}

.shine-3d-dot:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.85);
    outline-offset: 2px;
}

@media (min-width: 768px) {
    .shine-3d-hero.shine-hero-carousel {
        --shine-hero-h: clamp(380px, 38vw, 540px);
        border-radius: var(--shine-hero-radius);
    }

    .shine-3d-slide {
        border-radius: var(--shine-hero-radius);
    }
}

@media (min-width: 576px) {
    .shine-hero-overlay {
        display: block;
    }

    .shine-hero-content {
        position: absolute;
        left: clamp(1.25rem, 3.5vw, 2.25rem);
        top: 50%;
        transform: translateY(-50%);
        max-width: min(28rem, 46vw);
        padding: clamp(1.1rem, 2.2vw, 1.5rem) clamp(1.25rem, 2.5vw, 1.75rem);
        border-radius: calc(var(--shine-hero-radius-sm) + 2px);
        background: rgba(255, 255, 255, 0.06);
        border: 1px solid rgba(255, 255, 255, 0.14);
        -webkit-backdrop-filter: blur(14px);
        backdrop-filter: blur(14px);
        box-shadow:
            0 4px 24px rgba(0, 0, 0, 0.12),
            inset 0 1px 0 rgba(255, 255, 255, 0.2);
    }
}

@media (max-width: 575.98px) {
    .shine-3d-hero.shine-hero-carousel {
        --shine-hero-h: clamp(268px, 78vw, 320px);
        border-radius: var(--shine-hero-radius-sm);
    }

    .shine-hero-overlay {
        display: flex;
        flex-direction: column;
        justify-content: flex-end;
        padding: 0 1.25rem 2.65rem;
    }

    .shine-hero-content {
        position: static;
        transform: none;
        max-width: 92%;
        padding: 0;
        background: transparent;
        border: none;
        box-shadow: none;
        -webkit-backdrop-filter: none;
        backdrop-filter: none;
    }

    .shine-hero-subtitle {
        font-size: 0.62rem;
        letter-spacing: 0.18em;
        margin-bottom: 0.45rem;
        padding: 0.28rem 0.5rem 0.28rem 0.55rem;
    }

    .shine-hero-title {
        margin-bottom: 0.45rem;
    }

    .shine-hero-text {
        max-width: 19rem;
        margin-bottom: 0.85rem;
    }

    .shine-hero-btn {
        padding: 0.62rem 1.35rem;
        font-size: 0.875rem;
    }

    .shine-3d-nav-btn {
        width: 2.2rem;
        height: 2.2rem;
    }

    .shine-3d-nav-btn .bi {
        font-size: 1rem !important;
    }

    .shine-3d-dots {
        bottom: 0.65rem;
        padding: 0.28rem 0.45rem;
    }
}

/* ========= Горизонтальний overflow (підсилення + типові винуватці) =========
   Розкоментуйте на 1 хвилину, щоб побачити блок, що вилазить:
   * { outline: 1px solid red !important; }
*/
html,
body {
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

/* .container / .navbar не обрізаємо — ламає .table-responsive і випадаючі меню */
.page,
.main,
.content,
.hero,
.hero-slider,
.carousel,
.carousel-inner,
.carousel-item,
.layout-root,
.site-shell,
.shine-app-root,
.shine-app-column,
main.content {
    max-width: 100%;
    overflow-x: hidden;
}

section {
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
}

.hero-slider,
.carousel,
.carousel-inner,
.carousel-item {
    width: 100%;
    max-width: 100%;
    overflow: hidden;
}

.carousel img,
.hero-slider img {
    width: 100%;
    max-width: 100%;
    height: auto;
    object-fit: cover;
}

.shine-3d-hero,
.shine-3d-stage {
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
}

.shine-3d-slide img {
    max-width: 100%;
}

/* Offcanvas кабінету користувача — теж без 100vw */
#manageNavOffcanvas.offcanvas-start {
    --bs-offcanvas-width: 100%;
    width: 100%;
    max-width: 100%;
}

/* ========= Сторінки входу / реєстрації / пароля (спільний стиль) ========= */
.shine-login-page {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    padding-top: 0.5rem;
    padding-bottom: 2.5rem;
    background:
        radial-gradient(ellipse 85% 50% at 50% -10%, rgba(255, 79, 163, 0.12), transparent 55%),
        linear-gradient(180deg, #fffafc 0%, #faf7fb 55%, #f6f2f7 100%);
}

.shine-login-inner {
    max-width: 520px;
    margin: 0 auto;
    padding: 0 0.75rem;
}

.shine-login-inner-wide {
    max-width: 960px;
}

@media (min-width: 768px) {
    .shine-login-inner {
        padding: 0 1.25rem;
    }
}

.shine-login-breadcrumb {
    padding: 0.85rem 1.1rem;
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.92);
    border: 1px solid rgba(255, 182, 213, 0.38);
    box-shadow: 0 10px 28px rgba(40, 20, 35, 0.06);
    font-size: 0.92rem;
    color: #7b6c7a;
}

.shine-login-breadcrumb-link {
    color: #ff5fa2;
    text-decoration: none;
    font-weight: 600;
}

.shine-login-breadcrumb-link:hover {
    color: #d63384;
    text-decoration: underline;
}

.shine-login-breadcrumb-sep {
    margin: 0 0.35rem;
    opacity: 0.65;
}

.shine-login-breadcrumb-current {
    font-weight: 500;
    color: #5c4f5c;
}

.shine-login-card {
    border-radius: 26px !important;
    border: 1px solid rgba(255, 182, 213, 0.42) !important;
    background: rgba(255, 255, 255, 0.94) !important;
    box-shadow:
        0 18px 48px rgba(255, 105, 180, 0.12),
        inset 0 1px 0 rgba(255, 255, 255, 0.98) !important;
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
}

.shine-login-card-title {
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 700;
    color: #2a1f2e;
    letter-spacing: -0.02em;
}

.shine-login-card-lead {
    color: #6f5f70;
    font-size: 0.95rem;
    line-height: 1.55;
}

.shine-login-card .form-floating > .form-control,
.shine-login-card .form-floating > .form-control:focus {
    background-color: rgba(255, 252, 254, 0.98);
    border: 1px solid rgba(255, 182, 213, 0.45);
    border-radius: 14px;
    min-height: 3.35rem;
    color: #2b2230;
}

.shine-login-card .form-floating > .form-control:focus {
    border-color: rgba(255, 79, 163, 0.55);
    box-shadow: 0 0 0 0.2rem rgba(255, 79, 163, 0.18);
}

.shine-login-card .form-floating > label {
    color: #7b6a78;
    padding-left: 1rem;
}

.shine-login-card .form-floating > .form-control:focus ~ label,
.shine-login-card .form-floating > .form-control:not(:placeholder-shown) ~ label {
    color: #c2185b;
}

.shine-login-card .form-floating > .form-control:-webkit-autofill,
.shine-login-card .form-floating > .form-control:-webkit-autofill:hover,
.shine-login-card .form-floating > .form-control:-webkit-autofill:focus {
    -webkit-text-fill-color: #2b2230 !important;
    caret-color: #2b2230;
    box-shadow: 0 0 0 1000px #fff5fb inset !important;
    transition: background-color 99999s ease-out;
    border: 1px solid rgba(255, 182, 213, 0.55) !important;
}

.shine-login-card .form-check-input {
    width: 1.1em;
    height: 1.1em;
    border-color: rgba(255, 79, 163, 0.45);
}

.shine-login-card .form-check-input:checked {
    background-color: #ff3d94;
    border-color: #ff1f7a;
}

.shine-login-card .form-check-input:focus {
    box-shadow: 0 0 0 0.2rem rgba(255, 79, 163, 0.2);
}

.shine-login-card .form-check-label {
    color: #5c4f5c;
    font-size: 0.92rem;
}

.shine-login-submit {
    width: 100%;
    justify-content: center;
    min-height: 3rem;
    font-size: 1rem !important;
    cursor: pointer;
}

.shine-login-divider {
    margin: 1.5rem 0 1.25rem;
    border: 0;
    border-top: 1px solid rgba(255, 182, 213, 0.35);
    opacity: 1;
}

.shine-login-external-caption {
    text-align: center;
    font-size: 0.82rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #9a8494;
    margin-bottom: 0.75rem;
}

.shine-account-profile-card {
    border-radius: 22px;
    border: 1px solid rgba(255, 182, 213, 0.42);
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 0 14px 40px rgba(255, 105, 180, 0.1);
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.5rem;
}

.shine-account-profile-dl dt {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #9a8494;
    margin-bottom: 0.15rem;
}

.shine-account-profile-dl dd {
    font-weight: 600;
    color: #2a1f2e;
    margin-bottom: 0.75rem;
}

@media (prefers-reduced-motion: reduce) {
    .shine-login-card .form-floating > .form-control,
    .shine-login-card .form-floating > .form-control:focus {
        transition: none;
    }
}

/* =============================================================================
   Адмінка — premium «3D hero»: mesh-фон, скляна панель, картки з глибиною
   (розмітка: .shine-admin-main + .shine-admin-3d-glass на .card)
   ============================================================================= */

.admin-app-root .shine-admin-main {
    position: relative;
    isolation: isolate;
    background:
        radial-gradient(ellipse 88% 55% at 50% -18%, rgba(255, 79, 163, 0.14), transparent 58%),
        radial-gradient(ellipse 50% 42% at 100% 20%, rgba(255, 200, 230, 0.45), transparent 52%),
        radial-gradient(ellipse 45% 38% at 0% 80%, rgba(255, 182, 213, 0.22), transparent 48%),
        linear-gradient(180deg, #fffafc 0%, #faf5fb 42%, #f3ecf7 100%);
}

.admin-app-root .shine-admin-main::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    opacity: 0.55;
    background:
        radial-gradient(circle at 20% 30%, rgba(255, 79, 163, 0.06) 0%, transparent 42%),
        radial-gradient(circle at 85% 70%, rgba(194, 24, 91, 0.05) 0%, transparent 40%);
}

/* Сторінка: kicker + заголовок-градієнт */
.shine-admin-3d-page {
    max-width: 1040px;
    margin-left: auto;
    margin-right: auto;
}

.shine-admin-page-hero {
    padding: 0.5rem 0.25rem 0;
}

.shine-admin-page-kicker {
    display: inline-block;
    margin-bottom: 0.5rem;
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: #ff4f9a;
}

.shine-admin-page-title {
    font-family: "Playfair Display", Georgia, serif;
    font-size: clamp(1.65rem, 4vw, 2.35rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.1;
    margin: 0;
    background: linear-gradient(118deg, #c2185b 0%, #ff4f9a 48%, #d63384 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

@supports not (background-clip: text) {
    .shine-admin-page-title {
        color: #c2185b;
        -webkit-text-fill-color: unset;
        background: none;
    }
}

.shine-admin-page-lead {
    max-width: 36rem;
    margin-left: auto;
    margin-right: auto;
    font-size: 0.95rem;
    line-height: 1.55;
    color: #6f5f70;
}

@media (min-width: 992px) {
    .shine-admin-page-lead {
        margin-left: 0;
    }
}

/* Головна скляна панель — 3D «плаваюча» картка */
.admin-app-root .shine-admin-3d-glass.card {
    position: relative;
    overflow: visible;
    transform-style: preserve-3d;
    transform: perspective(var(--shine-hero-perspective, 1180px)) translateZ(0) rotateX(0.6deg);
    border-radius: clamp(1.25rem, 2.2vw, 1.85rem) !important;
    border: 1px solid rgba(255, 182, 213, 0.48) !important;
    background:
        linear-gradient(
            148deg,
            rgba(255, 255, 255, 0.88) 0%,
            rgba(255, 248, 252, 0.72) 42%,
            rgba(255, 252, 254, 0.86) 100%
        ) !important;
    backdrop-filter: blur(18px) saturate(1.2);
    -webkit-backdrop-filter: blur(18px) saturate(1.2);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.95) inset,
        0 28px 56px rgba(255, 79, 163, 0.14),
        0 12px 32px rgba(43, 34, 48, 0.08),
        0 0 0 1px rgba(255, 255, 255, 0.55) inset;
    transition:
        transform 0.45s cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 0.45s ease,
        border-color 0.35s ease;
}

.admin-app-root .shine-admin-3d-glass.card::before {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    pointer-events: none;
    z-index: 0;
    background: linear-gradient(
        125deg,
        rgba(255, 255, 255, 0.5) 0%,
        transparent 38%,
        transparent 62%,
        rgba(255, 79, 163, 0.08) 100%
    );
    opacity: 0.85;
}

.admin-app-root .shine-admin-3d-glass.card > * {
    position: relative;
    z-index: 1;
}

.admin-app-root .shine-admin-3d-glass--lift.card:hover {
    transform: perspective(var(--shine-hero-perspective, 1180px)) translateY(-6px) translateZ(16px) rotateX(1.4deg);
    border-color: rgba(255, 143, 190, 0.65) !important;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 1) inset,
        0 36px 72px rgba(255, 79, 163, 0.2),
        0 18px 40px rgba(194, 24, 91, 0.12),
        0 0 48px rgba(255, 79, 163, 0.12),
        0 0 0 1px rgba(255, 255, 255, 0.65) inset;
}

.shine-admin-card-header.card__header {
    padding-top: clamp(1.35rem, 3vw, 1.85rem);
    padding-bottom: clamp(1.1rem, 2.5vw, 1.5rem);
}

.shine-admin-card-title.title {
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 700;
    font-size: clamp(1.25rem, 2.4vw, 1.65rem);
    letter-spacing: -0.02em;
    color: #2a1f2e !important;
}

.shine-admin-card-subtitle.subtitle {
    color: #7b6c7a !important;
    font-size: 0.92rem !important;
    line-height: 1.5;
}

.shine-admin-divider.divider {
    height: 2px;
    background: linear-gradient(
        90deg,
        transparent,
        rgba(255, 79, 163, 0.35),
        rgba(255, 255, 255, 0.85),
        rgba(255, 79, 163, 0.35),
        transparent
    ) !important;
    opacity: 1;
}

.shine-admin-entry-grid.cards {
    gap: 1.1rem;
    padding: clamp(1rem, 2.5vw, 1.5rem) clamp(1rem, 2.5vw, 1.75rem) clamp(1.35rem, 3vw, 2rem) !important;
}

/* Картка запису — мікро-3D */
.admin-app-root .shine-admin-entry.entry {
    position: relative;
    transform-style: preserve-3d;
    transform: perspective(880px) translateZ(0);
    border-radius: 1.125rem !important;
    border: 1px solid rgba(255, 182, 213, 0.42) !important;
    background: linear-gradient(
        155deg,
        rgba(255, 255, 255, 0.94) 0%,
        rgba(255, 250, 253, 0.88) 55%,
        rgba(255, 245, 250, 0.92) 100%
    ) !important;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.9) inset,
        0 10px 28px rgba(255, 79, 163, 0.08),
        0 4px 14px rgba(43, 34, 48, 0.06);
    transition:
        transform 0.38s cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 0.38s ease,
        border-color 0.3s ease;
}

.admin-app-root .shine-admin-entry.entry::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.35s ease;
    background: radial-gradient(120% 80% at 10% 0%, rgba(255, 79, 163, 0.12), transparent 55%);
}

.admin-app-root .shine-admin-entry.entry:hover {
    transform: perspective(880px) translateY(-8px) translateZ(18px) rotateX(3.5deg) rotateY(-0.8deg);
    border-color: rgba(255, 143, 190, 0.55) !important;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 1) inset,
        0 22px 44px rgba(255, 79, 163, 0.16),
        0 8px 22px rgba(194, 24, 91, 0.1);
}

.admin-app-root .shine-admin-entry.entry:hover::after {
    opacity: 1;
}

.admin-app-root .shine-admin-3d-glass .client a {
    color: #c2185b !important;
    text-decoration: none;
    font-weight: 700;
    transition: color 0.2s ease, text-shadow 0.2s ease;
}

.admin-app-root .shine-admin-3d-glass .client a:hover {
    color: #ff4f9a !important;
    text-shadow: 0 0 20px rgba(255, 79, 163, 0.35);
}

.admin-app-root .shine-admin-3d-glass .btn-outline-danger {
    border-width: 1.5px;
    border-color: rgba(220, 53, 69, 0.55);
    color: #c82333 !important;
    font-weight: 600;
    transition:
        transform 0.22s ease,
        box-shadow 0.22s ease,
        background 0.22s ease,
        border-color 0.22s ease,
        color 0.22s ease;
}

.admin-app-root .shine-admin-3d-glass .btn-outline-danger:hover {
    transform: translateY(-2px);
    background: linear-gradient(135deg, rgba(255, 79, 163, 0.12), rgba(220, 53, 69, 0.12)) !important;
    border-color: rgba(220, 53, 69, 0.85);
    color: #a71d2a !important;
    box-shadow: 0 8px 22px rgba(220, 53, 69, 0.2);
}

.admin-app-root .shine-admin-3d-glass .btn-outline-info {
    border-width: 1.5px;
    border-color: rgba(255, 79, 163, 0.45);
    color: #c2185b !important;
    font-weight: 600;
    transition:
        transform 0.22s ease,
        box-shadow 0.22s ease,
        background 0.22s ease,
        border-color 0.22s ease,
        color 0.22s ease;
}

.admin-app-root .shine-admin-3d-glass .btn-outline-info:hover {
    transform: translateY(-2px);
    background: linear-gradient(135deg, rgba(255, 79, 163, 0.18), rgba(255, 182, 213, 0.35)) !important;
    border-color: rgba(255, 79, 163, 0.75);
    color: #8a0f45 !important;
    box-shadow: 0 8px 24px rgba(255, 79, 163, 0.22);
}

@media (prefers-reduced-motion: reduce) {
    .admin-app-root .shine-admin-3d-glass.card,
    .admin-app-root .shine-admin-3d-glass--lift.card:hover {
        transform: none !important;
        transition: none !important;
    }

    .admin-app-root .shine-admin-entry.entry,
    .admin-app-root .shine-admin-entry.entry:hover,
    .admin-app-root .shine-admin-3d-glass .btn-outline-danger,
    .admin-app-root .shine-admin-3d-glass .btn-outline-danger:hover,
    .admin-app-root .shine-admin-3d-glass .btn-outline-info,
    .admin-app-root .shine-admin-3d-glass .btn-outline-info:hover {
        transition: none;
        transform: none !important;
    }

    .admin-app-root .shine-admin-entry.entry:hover::after {
        opacity: 0;
    }
}

/* --- Історія процедур (timeline, до/після, форми) --- */
.th-client-banner {
    background: linear-gradient(135deg, rgba(255, 248, 252, 0.95) 0%, rgba(255, 255, 255, 0.98) 55%, rgba(255, 236, 244, 0.88) 100%);
    border: 1px solid rgba(255, 182, 213, 0.45) !important;
    box-shadow: 0 18px 44px rgba(255, 79, 163, 0.1), 0 8px 22px rgba(43, 34, 48, 0.06) !important;
}

.th-icon {
    color: #ff4f9a;
    font-size: 1.35rem;
}

.th-btn-primary {
    background: linear-gradient(118deg, #c2185b 0%, #ff4f9a 55%, #e91e8c 100%);
    border: none;
    color: #fff !important;
    font-weight: 600;
    box-shadow: 0 10px 26px rgba(255, 79, 163, 0.35);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.th-btn-primary:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 14px 32px rgba(255, 79, 163, 0.42);
    color: #fff !important;
}

.th-btn-primary:disabled {
    opacity: 0.65;
}

.th-form-card {
    border: 1px solid rgba(255, 182, 213, 0.35) !important;
    box-shadow: 0 16px 40px rgba(43, 34, 48, 0.07) !important;
}

.th-timeline {
    position: relative;
    padding-left: 0.5rem;
}

.th-timeline::before {
    content: "";
    position: absolute;
    left: 0.55rem;
    top: 0.35rem;
    bottom: 0.35rem;
    width: 3px;
    border-radius: 999px;
    background: linear-gradient(180deg, rgba(255, 79, 163, 0.45), rgba(255, 182, 213, 0.25));
}

.th-timeline-item {
    position: relative;
    padding-left: 2.1rem;
}

.th-timeline-marker {
    position: absolute;
    left: 0.1rem;
    top: 1.35rem;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: #fff;
    border: 3px solid #ff4f9a;
    box-shadow: 0 0 0 4px rgba(255, 79, 163, 0.15);
}

.th-visit-card {
    border-radius: 1.25rem !important;
    box-shadow: 0 14px 36px rgba(43, 34, 48, 0.08) !important;
    border: 1px solid rgba(255, 182, 213, 0.35) !important;
    background: linear-gradient(165deg, rgba(255, 255, 255, 0.98) 0%, rgba(255, 251, 253, 0.96) 100%);
}

.th-badge-date {
    background: rgba(255, 79, 163, 0.12);
    color: #8a0f45;
    font-weight: 600;
}

.th-badge-proc {
    background: rgba(194, 24, 91, 0.1);
    color: #6d0f3d;
    font-weight: 600;
}

.th-badge-before {
    background: linear-gradient(135deg, rgba(13, 110, 253, 0.12), rgba(13, 202, 240, 0.12));
    color: #0b4f8f;
    font-weight: 600;
}

.th-badge-after {
    background: linear-gradient(135deg, rgba(255, 79, 163, 0.18), rgba(255, 182, 213, 0.35));
    color: #7a0a3d;
    font-weight: 600;
}

.th-field {
    padding: 0.75rem 1rem;
    border-radius: 0.85rem;
    background: rgba(255, 248, 252, 0.65);
    border: 1px solid rgba(255, 182, 213, 0.28);
    min-height: 100%;
}

.th-field-label {
    display: block;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3708a;
    margin-bottom: 0.35rem;
}

.th-field-after {
    color: #c2185b;
}

.th-ba-wrap {
    position: relative;
    border-radius: 1rem;
    overflow: hidden;
    aspect-ratio: 16 / 10;
    max-height: 380px;
    background: #f8f4f6;
    --clip: 50;
}

.th-ba-base {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.th-ba-top {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: calc(var(--clip) * 1%);
    overflow: hidden;
    border-right: 2px solid rgba(255, 255, 255, 0.92);
    box-shadow: 6px 0 22px rgba(0, 0, 0, 0.12);
}

.th-ba-before-img {
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    width: calc(100% * 100 / clamp(5, var(--clip), 95));
    object-fit: cover;
    object-position: left center;
    display: block;
}

.th-ba-range {
    position: absolute;
    left: 8%;
    right: 8%;
    bottom: 6%;
    width: auto;
    z-index: 4;
    accent-color: #ff4f9a;
}

.th-thumb {
    width: 88px;
    height: 88px;
    object-fit: cover;
    border-radius: 0.65rem;
    border: 1px solid rgba(255, 182, 213, 0.5);
    box-shadow: 0 6px 16px rgba(43, 34, 48, 0.08);
}

.th-thumb-btn:hover .th-thumb {
    transform: scale(1.02);
    transition: transform 0.15s ease;
}

.th-edit-thumb-wrap .th-thumb {
    width: 100px;
    height: 100px;
}

.th-modal {
    z-index: 1080;
}

.th-upload-preview-img,
.th-upload-preview-placeholder {
    width: 104px;
    height: 104px;
    object-fit: cover;
    background: rgba(255, 248, 252, 0.9);
}

.th-upload-preview-placeholder {
    background: linear-gradient(135deg, rgba(255, 236, 244, 0.95), rgba(248, 249, 250, 0.98));
}

/* --- Оформлення замовлення (/orders, /order-confirm-page) --- */
.shine-checkout-page {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    padding-bottom: 2.5rem;
    background:
        radial-gradient(ellipse 88% 48% at 50% -8%, rgba(255, 79, 163, 0.11), transparent 55%),
        linear-gradient(180deg, #fffafc 0%, #faf7fb 50%, #f6f2f7 100%);
}

.shine-checkout-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 0.75rem;
}

@media (min-width: 768px) {
    .shine-checkout-inner {
        padding: 0 1.25rem;
    }
}

.shine-checkout-breadcrumb {
    padding: 0.85rem 1.1rem;
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.92);
    border: 1px solid rgba(255, 182, 213, 0.38);
    box-shadow: 0 10px 28px rgba(40, 20, 35, 0.06);
    font-size: 0.92rem;
    color: #7b6c7a;
}

.shine-checkout-breadcrumb-link {
    color: #ff5fa2;
    text-decoration: none;
    font-weight: 600;
}

.shine-checkout-breadcrumb-link:hover {
    color: #d63384;
    text-decoration: underline;
}

.shine-checkout-breadcrumb-sep {
    margin: 0 0.35rem;
    opacity: 0.65;
}

.shine-checkout-breadcrumb-current {
    font-weight: 500;
    color: #5c4f5c;
}

.shine-checkout-notice {
    margin: 0;
    padding: 0.85rem 1.1rem;
    border-radius: 16px;
    font-size: 0.95rem;
    line-height: 1.55;
    color: #5c4f5c;
    background: rgba(255, 255, 255, 0.88);
    border: 1px solid rgba(255, 182, 213, 0.38);
    box-shadow: 0 8px 22px rgba(255, 79, 163, 0.08);
}

.shine-checkout-notice i {
    color: #ff4f9a;
}

.shine-checkout-notice strong {
    color: #c2185b;
    font-weight: 700;
}

.shine-checkout-back-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    padding: 0.65rem 1.25rem;
    border: none;
    border-radius: 999px;
    font-weight: 600;
    font-size: 0.92rem;
    color: #fff !important;
    background: linear-gradient(145deg, #ff8fc4 0%, #ffa3d6 55%, #ffb8e0 100%);
    box-shadow: 0 8px 22px rgba(255, 79, 163, 0.28);
    transition: transform 0.2s ease, filter 0.2s ease, box-shadow 0.2s ease;
    cursor: pointer;
}

.shine-checkout-back-btn:hover {
    filter: brightness(1.05);
    transform: translateY(-1px);
    box-shadow: 0 10px 26px rgba(255, 79, 163, 0.34);
}

.shine-checkout-card {
    border-radius: 26px !important;
    border: 1px solid rgba(255, 182, 213, 0.42) !important;
    background: rgba(255, 255, 255, 0.96) !important;
    overflow: hidden;
    box-shadow:
        0 18px 48px rgba(255, 105, 180, 0.12),
        inset 0 1px 0 rgba(255, 255, 255, 0.98) !important;
}

.shine-checkout-card-header {
    padding: 1.1rem 1.35rem;
    background: linear-gradient(118deg, #c2185b 0%, #ff4f9a 48%, #ff6eb8 100%);
    border-bottom: 1px solid rgba(255, 255, 255, 0.25);
}

.shine-checkout-card-title {
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 700;
    font-size: clamp(1.1rem, 2.5vw, 1.35rem);
    letter-spacing: -0.01em;
}

.shine-checkout-brand {
    font-size: 0.82rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.shine-checkout-form-body {
    padding: clamp(1.15rem, 3vw, 1.75rem) !important;
}

.shine-checkout-form .form-label {
    color: #4a3d48;
    font-weight: 600;
    font-size: 0.875rem;
    margin-bottom: 0.35rem;
}

.shine-checkout-form .input-group-text {
    border-radius: 14px 0 0 14px;
    border: 1px solid rgba(255, 182, 213, 0.45);
    border-right: none;
    background: rgba(255, 248, 252, 0.98);
    color: #ff4f9a;
}

.shine-checkout-form .form-control {
    border-radius: 0 14px 14px 0;
    border: 1px solid rgba(255, 182, 213, 0.45);
    background-color: rgba(255, 252, 254, 0.98);
    color: #2b2230;
    padding-top: 0.55rem;
    padding-bottom: 0.55rem;
}

.shine-checkout-form .form-control:focus {
    border-color: rgba(255, 79, 163, 0.55);
    box-shadow: 0 0 0 0.2rem rgba(255, 79, 163, 0.16);
    background-color: #fff;
}

.shine-checkout-meta {
    min-height: 2.65rem;
    padding: 0.55rem 0.85rem;
    border-radius: 14px;
    border: 1px solid rgba(255, 182, 213, 0.38);
    background: rgba(255, 252, 254, 0.98);
    color: #2b2230;
}

.shine-checkout-meta-icon {
    color: #ff4f9a;
    font-size: 1.05rem;
}

.shine-checkout-amount-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.55rem 1rem;
    border-radius: 14px;
    font-weight: 700;
    font-size: 1rem;
    color: #c2185b;
    background: rgba(255, 79, 163, 0.08);
    border: 1px dashed rgba(255, 79, 163, 0.45);
}

.shine-checkout-btn-outline {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    min-height: 3rem;
    padding: 0.75rem 1.5rem;
    border-radius: 999px;
    font-weight: 600;
    font-size: 0.95rem;
    color: #9b1b5a !important;
    border: 2px solid rgba(255, 79, 163, 0.45);
    background: rgba(255, 255, 255, 0.95);
    cursor: pointer;
    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
    box-shadow: 0 2px 8px rgba(255, 79, 163, 0.08);
}

.shine-checkout-btn-outline:hover {
    background: rgba(255, 79, 163, 0.1);
    border-color: rgba(255, 79, 163, 0.65);
    color: #8b0a4d !important;
    box-shadow: 0 4px 14px rgba(255, 79, 163, 0.12);
}

.shine-checkout-submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    min-height: 3rem;
    padding: 0.75rem 1.65rem;
    font-size: 1rem !important;
    cursor: pointer;
}

.shine-checkout-submit:disabled {
    opacity: 0.72;
    cursor: not-allowed;
    transform: none !important;
}

.shine-checkout-confirm-inner {
    max-width: 650px;
}

.shine-checkout-success-icon-wrap {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.25rem;
    height: 4.25rem;
    border-radius: 50%;
    background: linear-gradient(145deg, rgba(255, 79, 163, 0.18), rgba(255, 182, 213, 0.35));
    box-shadow: 0 10px 28px rgba(255, 79, 163, 0.22);
}

.shine-checkout-success-icon {
    font-size: 2rem;
    font-weight: 700;
    color: #ff4f9a;
    line-height: 1;
}

.shine-checkout-success-title {
    margin: 0 0 0.85rem;
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 700;
    font-size: clamp(1.45rem, 4vw, 2rem);
    line-height: 1.15;
    letter-spacing: -0.02em;
    background: linear-gradient(118deg, #c2185b 0%, #ff4f9a 52%, #d63384 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

@supports not (background-clip: text) {
    .shine-checkout-success-title {
        color: #c2185b;
        -webkit-text-fill-color: unset;
        background: none;
    }
}

.shine-checkout-success-lead {
    margin: 0 auto;
    max-width: 30rem;
    font-size: 1.05rem;
    line-height: 1.65;
}

.shine-checkout-success-accent {
    color: #ff7eb8;
    font-weight: 500;
}

.shine-checkout-success-name {
    color: #2a1f2e;
    font-weight: 700;
}

.shine-checkout-success-hint {
    font-size: 0.95rem;
    line-height: 1.55;
    color: #8b6a7d;
}

@media (max-width: 575.98px) {
    .shine-checkout-back-btn,
    .shine-checkout-btn-outline,
    .shine-checkout-submit {
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .shine-checkout-back-btn,
    .shine-checkout-btn-outline {
        transition: none;
    }
}

/* --- Форма додавання/редагування картки (косметологія, магазин, масаж) --- */
.add-card-wrapper {
    padding: 32px;
    border-radius: 28px;
    background: rgba(255, 255, 255, 0.88);
    border: 1px solid rgba(255, 182, 210, 0.25);
    box-shadow: 0 20px 45px rgba(255, 105, 180, 0.08);
}

.add-card-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: -32px -32px 30px;
    padding: 22px 30px;
    border-radius: 28px 28px 0 0;
    background: linear-gradient(135deg, #ff2f92, #f062b0);
    color: white;
    font-size: 22px;
    font-weight: 700;
}

.add-card-subtitle {
    margin: 0 0 10px;
    text-align: center;
    font-family: "Playfair Display", Georgia, serif;
    font-size: 1.25rem;
    font-weight: 700;
    color: #2a1f2e;
}

.add-card-wrapper .form-grid {
    display: flex;
    flex-direction: column;
    gap: 26px;
}

.add-card-wrapper .form-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.add-card-wrapper .form-label {
    font-size: 15px;
    font-weight: 600;
    color: #4b5563;
    margin-left: 4px;
    margin-bottom: 0;
}

.add-card-wrapper .form-control,
.add-card-wrapper .form-select {
    height: 56px;
    border-radius: 16px;
    border: 1px solid rgba(255, 182, 210, 0.35);
    padding: 0 18px;
    font-size: 15px;
    background: rgba(255, 255, 255, 0.95);
    transition: border-color 0.3s, box-shadow 0.3s;
}

.add-card-wrapper textarea.form-control {
    min-height: 120px;
    padding-top: 16px;
    height: auto;
    resize: vertical;
}

.add-card-wrapper .form-control:focus,
.add-card-wrapper .form-select:focus {
    outline: none;
    border-color: #ff4f9b;
    box-shadow: 0 0 0 4px rgba(255, 79, 155, 0.12);
}

.add-card-wrapper .price-input {
    display: flex;
    align-items: center;
    gap: 14px;
}

.add-card-wrapper .price-input .form-control {
    flex: 1;
    min-width: 0;
}

.add-card-wrapper .price-symbol {
    width: 56px;
    height: 56px;
    flex-shrink: 0;
    border-radius: 16px;
    background: #fff0f7;
    color: #ff2f92;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
    font-weight: 700;
    border: 1px solid rgba(255, 182, 210, 0.4);
}

.add-card-wrapper .file-upload {
    padding: 14px;
    border-radius: 16px;
    border: 2px dashed rgba(255, 182, 210, 0.5);
    background: rgba(255, 245, 249, 0.6);
}

.add-card-wrapper .file-upload .form-control {
    height: auto;
    min-height: 48px;
    border: none;
    box-shadow: none;
    background: transparent;
    padding: 8px 12px;
}

.add-card-wrapper .form-actions {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    flex-wrap: wrap;
    gap: 16px;
    margin-top: 18px;
}

.add-card-wrapper .btn-save,
.add-card-wrapper .btn-cancel {
    height: 52px;
    padding: 0 28px;
    border-radius: 999px;
    font-weight: 700;
    cursor: pointer;
    transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
}

.add-card-wrapper .btn-save {
    border: none;
    background: linear-gradient(135deg, #ff2f92, #f062b0);
    color: white;
    box-shadow: 0 12px 25px rgba(255, 47, 146, 0.25);
}

.add-card-wrapper .btn-save:hover {
    transform: translateY(-2px);
    box-shadow: 0 18px 35px rgba(255, 47, 146, 0.35);
}

.add-card-wrapper .btn-cancel {
    background: white;
    color: #ff4f9b;
    border: 1px solid rgba(255, 182, 210, 0.5);
}

.add-card-wrapper .btn-cancel:hover {
    background: #fff2f8;
}

.add-card-wrapper .btn-delete-card {
    height: 52px;
    padding: 0 24px;
    border-radius: 999px;
    font-weight: 700;
    background: white;
    color: #c2185b;
    border: 2px solid rgba(220, 53, 69, 0.45);
    margin-right: auto;
}

.add-card-wrapper .btn-delete-card:hover {
    background: rgba(220, 53, 69, 0.06);
}

.add-card-wrapper .add-card-hint {
    font-size: 0.85rem;
    color: #9a8a96;
    margin-top: -4px;
}

@media (max-width: 575.98px) {
    .add-card-wrapper {
        padding: 20px;
    }

    .add-card-header {
        margin: -20px -20px 24px;
        padding: 18px 20px;
        font-size: 18px;
    }

    .add-card-wrapper .btn-save,
    .add-card-wrapper .btn-cancel,
    .add-card-wrapper .btn-delete-card {
        width: 100%;
        margin-right: 0;
    }

    .add-card-wrapper .form-actions {
        flex-direction: column;
        align-items: stretch;
    }
}

@media (prefers-reduced-motion: reduce) {
    .add-card-wrapper .btn-save:hover {
        transform: none;
    }
}
