/* ============================================================ Drawer – Right-side slide-in panel ============================================================ */ .overlay { position: fixed; inset: 0; z-index: 1000; background: rgba(0, 0, 0, 0.4); animation: fadeIn 0.2s ease-out; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .panel { position: fixed; top: 0; right: 0; height: 100vh; max-width: 100vw; background: var(--color-bg-card, #fff); box-shadow: -4px 0 32px rgba(0, 0, 0, 0.18); display: flex; flex-direction: column; animation: slideIn 0.25s cubic-bezier(0.4, 0, 0.2, 1); } @keyframes slideIn { from { transform: translateX(100%); } to { transform: translateX(0); } } /* ---- Header ---- */ .header { display: flex; align-items: center; justify-content: space-between; padding: 1.25rem 1.5rem; border-bottom: 1px solid var(--color-border, #e5e7eb); flex-shrink: 0; background: var(--color-bg-card, #fff); } .title { font-size: 1.125rem; font-weight: 600; margin: 0; color: var(--color-text); } .closeButton { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; font-size: 1.5rem; line-height: 1; color: var(--color-text-muted, #9ca3af); background: none; border: none; border-radius: var(--radius-sm, 4px); cursor: pointer; transition: all 0.15s; flex-shrink: 0; } .closeButton:hover { background: var(--color-bg, #f3f4f6); color: var(--color-text, #111827); } /* ---- Body (scrollable) ---- */ .body { flex: 1; overflow-y: auto; padding: 1.5rem; overscroll-behavior: contain; } /* ---- Footer (sticky) ---- */ .footer { padding: 1rem 1.5rem; border-top: 1px solid var(--color-border, #e5e7eb); flex-shrink: 0; background: var(--color-bg-card, #fff); } /* ---- Responsive ---- */ @media (max-width: 600px) { .panel { width: 100% !important; } }