body {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-feature-settings: "palt";
    overflow-x: hidden;
    padding-bottom: 80px;
}

html {
    overflow-x: clip;
}

.anim-blur {
    opacity: 0;
    filter: blur(6px);
    transition: opacity 0.8s ease-out, filter 0.8s ease-out;
    will-change: opacity, filter;
}

.anim-blur.active {
    opacity: 1;
    filter: blur(0);
}

.anim-mask {
    opacity: 0;
    clip-path: inset(0 0 100% 0);
    transition: clip-path 1s cubic-bezier(0.25, 1, 0.5, 1), opacity 0.8s ease-out;
    will-change: clip-path;
}

.anim-mask.active {
    opacity: 1;
    clip-path: inset(0 0 0 0);
}

.anim-up {
    opacity: 0;
    filter: blur(5px);
    transition: opacity 0.8s ease-out, filter 0.8s ease-out;
}

.anim-up.active {
    opacity: 1;
    filter: blur(0);
}

.delay-100 {
    transition-delay: 100ms;
}

.delay-200 {
    transition-delay: 200ms;
}

.delay-300 {
    transition-delay: 300ms;
}

.delay-400 {
    transition-delay: 400ms;
}

.delay-500 {
    transition-delay: 500ms;
}

.livinglee-hero .anim-blur {
    opacity: 1;
    filter: none;
    transition: none;
}

.livinglee-hero .delay-300 {
    transition-delay: 160ms;
}

.livinglee-hero .delay-500 {
    transition-delay: 260ms;
}

.livinglee-hero,
.livinglee-hero .absolute.inset-0 {
    contain: paint;
}

.livinglee-hero .animate-slow-zoom {
    animation: none;
    transform: none !important;
}

.marquee-container {
    contain: layout paint;
    max-width: 100%;
    overflow: clip;
}

.custom-list li {
    position: relative;
    padding-left: 1.2em;
    margin-bottom: 0.8em;
}

.custom-list li::before {
    content: "・";
    position: absolute;
    left: 0;
    color: #555;
}

.pricing-card {
    transition:
        opacity 0.8s ease-out,
        filter 0.8s ease-out,
        transform 720ms cubic-bezier(0.22, 1, 0.36, 1),
        box-shadow 720ms cubic-bezier(0.22, 1, 0.36, 1),
        border-color 720ms cubic-bezier(0.22, 1, 0.36, 1),
        background-color 720ms cubic-bezier(0.22, 1, 0.36, 1);
    will-change: transform, box-shadow;
}

.pricing-card:hover {
    transform: translate3d(0, -8px, 0);
    border-color: rgba(52, 99, 120, 0.24);
    box-shadow: 0 26px 70px rgba(26, 26, 26, 0.12);
}

.option-note-title {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin-bottom: 0.5rem;
    color: #1a1a1a;
    font-weight: 700;
    line-height: 1.4;
}

.option-note-marker {
    width: 0;
    height: 0;
    border-left: 0.32rem solid transparent;
    border-right: 0.32rem solid transparent;
    border-top: 0.42rem solid #346378;
    flex: 0 0 auto;
    transform: translateY(0.08rem);
}

.reserve-glass-panel {
    background: rgba(26, 26, 26, 0.74);
    border: 1px solid rgba(255, 255, 255, 0.26);
    box-shadow:
        0 22px 70px rgba(0, 0, 0, 0.26),
        inset 0 1px 0 rgba(255, 255, 255, 0.18);
    backdrop-filter: blur(18px) saturate(120%);
    -webkit-backdrop-filter: blur(18px) saturate(120%);
}

.text-shadow-sm {
    text-shadow: 0 2px 20px rgba(0, 0, 0, 0.6);
}

.marquee-container:hover .animate-marquee,
.marquee-container:hover .animate-marquee-reverse {
    animation-play-state: paused;
}

.reviews-track {
    animation: none;
    display: grid;
    gap: 1.5rem;
    grid-template-columns: 1fr;
    margin: 0 auto;
    max-width: 80rem;
    padding: 0 1.5rem;
    transform: none !important;
    white-space: normal;
    width: auto !important;
}

.review-card {
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    width: auto !important;
}

.review-card-text {
    display: block;
    overflow: visible;
    min-height: 0;
}

.marquee-tail-spacer {
    display: none;
}

@media (min-width: 768px) {
    .reviews-track {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        padding: 0 3rem;
    }
}

@media (min-width: 1024px) {
    .reviews-track {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.calendar-filter {
    filter: grayscale(100%) contrast(90%);
    opacity: 0.9;
    transition: all 0.3s ease;
}

.calendar-filter:hover {
    filter: grayscale(0%) contrast(100%);
    opacity: 1;
}

@keyframes scroll-line {
    0% {
        transform: scaleY(0);
        transform-origin: top;
        opacity: 0;
    }

    20% {
        opacity: 1;
    }

    50% {
        transform: scaleY(1);
        transform-origin: top;
        opacity: 1;
    }

    50.1% {
        transform: scaleY(1);
        transform-origin: bottom;
        opacity: 1;
    }

    80% {
        opacity: 1;
    }

    100% {
        transform: scaleY(0);
        transform-origin: bottom;
        opacity: 0;
    }
}

.scroll-indicator-line {
    animation: scroll-line 2s cubic-bezier(0.77, 0, 0.175, 1) infinite;
}

@media (prefers-reduced-motion: reduce) {
    .pricing-card {
        transition: box-shadow 180ms ease-out, border-color 180ms ease-out;
        will-change: auto;
    }

    .pricing-card:hover {
        transform: none;
    }
}
