.overlay { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0,0,0,0.18); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 16px; } [data-theme="dark"] .overlay { background: rgba(0,0,0,0.5); } .modal { background: var(--card-background); border-radius: 14px; padding: 32px 28px 24px 28px; min-width: 340px; max-width: 90vw; max-height: 90vh; box-shadow: 0 12px 48px 0 var(--shadow-color); position: relative; animation: modalIn 0.18s cubic-bezier(.4,1.3,.6,1); overflow-y: auto; border: 1px solid var(--border-color); } .closeBtn { position: absolute; top: 12px; right: 16px; background: none; border: none; font-size: 26px; color: #6366f1; cursor: pointer; font-weight: 700; line-height: 1; padding: 0; z-index: 2; opacity: 0.8; transition: opacity 0.2s; min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; } .closeBtn:hover { opacity: 1; } @keyframes modalIn { from { transform: translateY(40px) scale(0.98); opacity: 0; } to { transform: none; opacity: 1; } } /* Адаптивные стили для планшетов */ @media (max-width: 1024px) { .modal { padding: 28px 24px 20px 24px; min-width: 300px; } .closeBtn { font-size: 24px; top: 10px; right: 14px; } } /* Адаптивные стили для мобильных устройств */ @media (max-width: 768px) { .overlay { padding: 12px; align-items: flex-start; padding-top: 60px; } .modal { padding: 24px 20px 16px 20px; min-width: 280px; max-width: 95vw; max-height: 85vh; border-radius: 12px; } .closeBtn { font-size: 22px; top: 8px; right: 12px; } } @media (max-width: 480px) { .overlay { padding: 8px; padding-top: 50px; } .modal { padding: 20px 16px 12px 16px; min-width: 260px; max-width: 98vw; border-radius: 10px; } .closeBtn { font-size: 20px; top: 6px; right: 10px; } } /* Улучшенная поддержка touch устройств */ @media (hover: none) and (pointer: coarse) { .closeBtn { min-width: 48px; min-height: 48px; } .modal { -webkit-overflow-scrolling: touch; } }