html.has-drawer-open,
body.has-drawer-open {
    overflow: hidden;
}

.reveal {
    opacity: 0;
    transition: opacity 760ms ease, transform 760ms cubic-bezier(0.2, 0.72, 0.22, 1);
}

.reveal-from-left { transform: translateX(-22px); }
.reveal-from-right { transform: translateX(22px); }
.reveal-from-bottom { transform: translateY(18px); }

.reveal.is-visible {
    opacity: 1;
    transform: translate(0);
}

.service-card.reveal:nth-child(2),
.gallery-item.reveal:nth-child(2),
.gallery-item.reveal:nth-child(5),
.gallery-item.reveal:nth-child(8),
.gallery-item.reveal:nth-child(11),
.gallery-item.reveal:nth-child(14),
.gallery-item.reveal:nth-child(17),
.gallery-item.reveal:nth-child(20) { transition-delay: 90ms; }

.service-card.reveal:nth-child(3),
.gallery-item.reveal:nth-child(3),
.gallery-item.reveal:nth-child(6),
.gallery-item.reveal:nth-child(9),
.gallery-item.reveal:nth-child(12),
.gallery-item.reveal:nth-child(15),
.gallery-item.reveal:nth-child(18) { transition-delay: 180ms; }

.drawer-scrim {
    position: fixed;
    z-index: 20;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    opacity: 0;
    visibility: hidden;
    transition: opacity 360ms ease, visibility 360ms ease;
}

.enquiry-drawer {
    position: fixed;
    z-index: 21;
    top: 0;
    right: 0;
    width: min(100%, 440px);
    height: 100dvh;
    padding: 88px 48px 42px;
    background: #ffffff;
    color: var(--ink);
    box-shadow: -24px 0 55px rgba(0, 0, 0, 0.2);
    transform: translateX(105%);
    transition: transform 520ms cubic-bezier(0.2, 0.75, 0.25, 1);
}

.enquiry-drawer.is-open { transform: translateX(0); }
.drawer-scrim.is-visible { opacity: 1; visibility: visible; }

.enquiry-drawer h2 {
    margin: 0 0 21px;
    color: var(--navy);
    font-size: clamp(2.6rem, 6vw, 3.7rem);
    font-weight: 760;
    letter-spacing: -0.07em;
    line-height: 0.91;
}

.enquiry-drawer > p:not(.eyebrow) {
    margin: 0;
    color: var(--muted);
    font-size: 15px;
    line-height: 1.75;
}

.drawer-close {
    position: absolute;
    top: 27px;
    right: 29px;
    width: 39px;
    height: 39px;
    border: 1px solid var(--line);
    border-radius: 11px;
    background: var(--mist);
    color: var(--navy);
    font-size: 25px;
    line-height: 1;
    cursor: pointer;
}

.drawer-close:hover,
.drawer-close:focus-visible {
    border-color: var(--gold);
    outline: 0;
}

.drawer-points {
    display: grid;
    gap: 13px;
    margin: 34px 0;
    padding: 23px 0;
    border-top: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
    color: #5c5c5c;
    font-size: 13px;
    font-weight: 650;
}

.gallery-modal[open] {
    animation: modal-in 260ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.gallery-modal[open]::backdrop {
    animation: backdrop-in 260ms ease both;
}

@keyframes modal-in {
    from { opacity: 0; transform: translateY(16px) scale(0.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes backdrop-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

@media (max-width: 760px) {
    .enquiry-drawer { padding: 80px 27px 32px; }
    .drawer-close { top: 19px; right: 21px; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }

    .reveal { opacity: 1; transform: none; }
}
