.modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:var(--z-modal);background:var(--surface-backdrop);display:flex;align-items:center;justify-content:center;padding:var(--foundation-space-4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:modalBackdropFadeIn var(--foundation-duration-normal) var(--foundation-ease-out)}.modal{background:var(--surface-base);border:1px solid var(--border-default);border-radius:var(--radius-xl);box-shadow:var(--shadow-strong);max-height:90vh;overflow:hidden;position:relative;width:100%;display:flex;flex-direction:column;animation:modalScaleIn var(--foundation-duration-normal) var(--foundation-ease-out)}.modal--sm{max-width:400px}.modal--md{max-width:500px}.modal--lg{max-width:800px}.modal--xl{max-width:1000px}.modal--2xl{max-width:1200px}.modal--3xl{max-width:1400px}.modal--full{max-width:calc(100vw - var(--foundation-space-8));max-height:calc(100vh - var(--foundation-space-8))}.modal__header{display:flex;align-items:center;justify-content:space-between;gap:var(--foundation-space-4);padding:var(--space-modal-padding-md);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.modal__title{margin:0;flex:1 1}.modal__close-btn{flex-shrink:0}.modal__header--no-title{justify-content:flex-end}.modal__content{padding:var(--space-modal-content-padding);flex:1 1 auto;overflow-y:auto;overflow-x:hidden;min-height:0;display:flex;flex-direction:column}.modal__actions{padding-top:var(--foundation-space-6);margin-top:auto}.modal__actions,.modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-modal-gap-md);flex-shrink:0}.modal__footer{padding:var(--space-modal-footer-padding);border-top:1px solid var(--border-subtle)}.modal:not(:has(.modal__header)) .modal__content{padding-top:var(--space-modal-padding-md)}@keyframes modalBackdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalScaleIn{0%{opacity:0;transform:scale(.95) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-backdrop--closing{animation:modalBackdropFadeOut var(--foundation-duration-fast) var(--foundation-ease-in)}.modal--closing{animation:modalScaleOut var(--foundation-duration-fast) var(--foundation-ease-in)}@keyframes modalBackdropFadeOut{0%{opacity:1}to{opacity:0}}@keyframes modalScaleOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.95) translateY(-20px)}}@media (max-width:768px){.modal-backdrop{padding:var(--foundation-space-2)}.modal--2xl,.modal--3xl,.modal--lg,.modal--md,.modal--sm,.modal--xl{max-width:100%;max-height:95vh}.modal__actions,.modal__content,.modal__footer,.modal__header{padding:var(--foundation-space-4)}.modal__actions,.modal__footer{gap:var(--foundation-space-2)}}@media (max-width:640px){.modal__actions,.modal__footer{flex-direction:column-reverse;align-items:stretch}.modal__actions>*,.modal__footer>*{width:100%}}@media (prefers-reduced-motion:reduce){.modal,.modal--closing,.modal-backdrop,.modal-backdrop--closing{animation:none!important}}.modal,.modal__content:focus{outline:none}.modal__content::-webkit-scrollbar{width:8px}.modal__content::-webkit-scrollbar-track{background:transparent}.modal__content::-webkit-scrollbar-thumb{background:var(--surface-sunken);border-radius:var(--radius-lg)}.modal__content::-webkit-scrollbar-thumb:hover{background:var(--surface-deep)}