.root { position: fixed; inset: 0; z-index: var(--z-drawer); pointer-events: none; } .scrim { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.45); pointer-events: auto; animation: fadeIn var(--dur-fast) var(--ease); } .panel { position: absolute; top: 0; bottom: 0; background: var(--bg-1); border-left: 1px solid var(--line); pointer-events: auto; display: flex; flex-direction: column; box-shadow: 0 0 24px rgba(0, 0, 0, 0.5); animation: slideIn var(--dur-med) var(--ease); } .left .panel { left: 0; border-right: 1px solid var(--line); border-left: 0; animation-name: slideInLeft; } .right .panel { right: 0; } .header { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--line); flex: 0 0 auto; } .title { flex: 1; font-size: var(--fs-md); text-transform: uppercase; letter-spacing: 0.06em; color: var(--fg-mute); } .close { background: transparent; border: 0; font-size: 22px; color: var(--fg-mute); width: 32px; height: 32px; border-radius: var(--r-1); padding: 0; } .close:hover { background: var(--bg-2); color: var(--fg); } .body { flex: 1; overflow: auto; padding: var(--sp-3) var(--sp-4); } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideIn { from { transform: translateX(100%); } to { transform: translateX(0); } } @keyframes slideInLeft { from { transform: translateX(-100%); } to { transform: translateX(0); } }