/**
 * cz-drawer — off-canvas side panel.
 *
 * Slide-from-right (480px desktop, full screen ≤640px). Behaviour in
 * cz-drawer.js (focus trap, Esc, backdrop click). Pair the panel with
 * role="dialog" + aria-modal="true".
 *
 * @package ClimaZona
 */

.cz-drawer {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    justify-content: flex-end;
    pointer-events: none;
    visibility: hidden;
    transition: visibility 0s linear var(--transition-base);
}

.cz-drawer[aria-hidden="false"],
.cz-drawer.is-open {
    pointer-events: auto;
    visibility: visible;
    transition: visibility 0s linear 0s;
}

.cz-drawer__backdrop {
    position: absolute;
    inset: 0;
    background: rgb(0 0 0 / 0.4);
    opacity: 0;
    transition: opacity var(--transition-base);
    cursor: pointer;
}

.cz-drawer[aria-hidden="false"] .cz-drawer__backdrop,
.cz-drawer.is-open .cz-drawer__backdrop {
    opacity: 1;
}

.cz-drawer__panel {
    position: relative;
    display: flex;
    flex-direction: column;
    width: min(480px, 100vw);
    max-width: 100vw;
    /* 100vh incluye la chrome del navegador en iOS Safari → footer queda
       detrás de la barra inferior. 100dvh excluye chrome dinámicamente. */
    height: 100vh;
    height: 100dvh;
    background: var(--card);
    color: var(--card-foreground);
    box-shadow: var(--shadow-lg);
    transform: translateX(100%);
    transition: transform var(--transition-base);
    overflow: hidden;
}

.cz-drawer[aria-hidden="false"] .cz-drawer__panel,
.cz-drawer.is-open .cz-drawer__panel {
    transform: translateX(0);
}

.cz-drawer__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    padding: var(--spacing-md) var(--spacing-lg);
    /* Notch / dynamic island en orientación landscape o iPhone con barra superior */
    padding-top: max(var(--spacing-md), env(safe-area-inset-top, var(--spacing-md)));
    padding-left: max(var(--spacing-lg), env(safe-area-inset-left, var(--spacing-lg)));
    padding-right: max(var(--spacing-lg), env(safe-area-inset-right, var(--spacing-lg)));
    border-bottom: 1px solid var(--border-color);
    flex-shrink: 0;
}

.cz-drawer__title {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-semibold);
    color: var(--foreground);
    margin: 0;
    letter-spacing: var(--tracking-tight);
}

.cz-drawer__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
    background: transparent;
    border: 1px solid transparent;
    border-radius: var(--border-radius-sm);
    color: var(--muted-foreground);
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
    transition: background var(--transition-fast), color var(--transition-fast);
}

.cz-drawer__close:hover {
    background: var(--muted);
    color: var(--foreground);
}

.cz-drawer__close:focus-visible {
    outline: none;
    box-shadow: 0 0 0 var(--ring-offset) var(--background),
                0 0 0 calc(var(--ring-offset) + 2px) var(--ring);
}

.cz-drawer__body {
    flex: 1;
    overflow-y: auto;
    padding: var(--spacing-lg);
}

.cz-drawer__footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--spacing-sm);
    padding: var(--spacing-md) var(--spacing-lg);
    /* iPhone home indicator (safari bottom bar) */
    padding-bottom: max(var(--spacing-md), env(safe-area-inset-bottom, var(--spacing-md)));
    padding-left: max(var(--spacing-lg), env(safe-area-inset-left, var(--spacing-lg)));
    padding-right: max(var(--spacing-lg), env(safe-area-inset-right, var(--spacing-lg)));
    border-top: 1px solid var(--border-color);
    background: var(--muted);
    flex-shrink: 0;
}

@media (max-width: 640px) {
    .cz-drawer__panel {
        width: 100vw;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cz-drawer__backdrop,
    .cz-drawer__panel {
        transition: none;
    }
}

/* Lock body scroll while a drawer is open (toggled by JS). */
body.cz-drawer-open {
    overflow: hidden;
}
