:root{--ui-modal-green:#1a5c38;--ui-modal-green-dark:#0f3d22;--ui-modal-red:#b42318;--ui-modal-orange:#b54708;--ui-modal-blue:#175cd3;--ui-modal-text:#18271f;--ui-modal-muted:#667a6e;--ui-modal-border:#d7e3db}
.app-ui-modal{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;padding:20px;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;font-family:'Plus Jakarta Sans',sans-serif;box-sizing:border-box}
.app-ui-modal.is-open{opacity:1;visibility:visible}
.app-ui-modal__backdrop{position:absolute;inset:0;background:rgba(4,23,13,.68);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.app-ui-modal__dialog{position:relative;z-index:1;width:min(100%,430px);max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain;background:#fff;border:1px solid rgba(255,255,255,.65);border-radius:24px;box-shadow:0 30px 100px rgba(0,0,0,.36);transform:translateY(14px) scale(.98);transition:transform .22s ease;padding:28px;box-sizing:border-box}
.app-ui-modal.is-open .app-ui-modal__dialog{transform:none}
.app-ui-modal__icon{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;margin:0 auto 16px;background:#e8f5ee;color:var(--ui-modal-green);font-size:26px;font-weight:800;line-height:1}
.app-ui-modal--success .app-ui-modal__icon{background:#e8f5ee;color:#14804a}
.app-ui-modal--error .app-ui-modal__icon,.app-ui-modal--danger .app-ui-modal__icon{background:#fff0ee;color:var(--ui-modal-red)}
.app-ui-modal--warning .app-ui-modal__icon{background:#fff6e8;color:var(--ui-modal-orange)}
.app-ui-modal--info .app-ui-modal__icon{background:#edf4ff;color:var(--ui-modal-blue)}
.app-ui-modal--loading .app-ui-modal__icon{background:#e8f5ee;color:var(--ui-modal-green)}
.app-ui-modal__spinner{width:24px;height:24px;border:3px solid currentColor;border-right-color:transparent;border-radius:50%;animation:appModalSpin .75s linear infinite}
@keyframes appModalSpin{to{transform:rotate(360deg)}}
.app-ui-modal__title{margin:0;text-align:center;color:var(--ui-modal-text);font-size:22px;line-height:1.35;font-weight:800;letter-spacing:-.025em;padding-inline:18px}
.app-ui-modal__message{margin:8px auto 0;max-width:350px;text-align:center;color:var(--ui-modal-muted);font-size:13px;line-height:1.65;white-space:pre-line;overflow-wrap:anywhere}
.app-ui-modal__field{margin-top:20px;text-align:left}
.app-ui-modal__label{display:block;margin-bottom:8px;color:#34493d;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.app-ui-modal__input{width:100%;min-height:48px;padding:12px 14px;border:1.5px solid var(--ui-modal-border);border-radius:12px;background:#fff;color:var(--ui-modal-text);font:600 15px/1.4 'Plus Jakarta Sans',sans-serif;outline:none;box-sizing:border-box}
.app-ui-modal__input:focus{border-color:var(--ui-modal-green);box-shadow:0 0 0 4px rgba(26,92,56,.1)}
.app-ui-modal__input-error{display:none;margin-top:7px;color:var(--ui-modal-red);font-size:12px;font-weight:700}
.app-ui-modal__input-error.is-visible{display:block}
.app-ui-modal__actions{display:flex;justify-content:center;gap:10px;margin-top:24px}
.app-ui-modal__button{flex:1;min-width:0;min-height:46px;border:none;border-radius:12px;padding:11px 16px;font:800 14px/1.2 'Plus Jakarta Sans',sans-serif;cursor:pointer;transition:transform .15s ease,filter .15s ease;background:#edf3ef;color:#294235}
.app-ui-modal__button:hover{filter:brightness(.98)}
.app-ui-modal__button:active{transform:scale(.98)}
.app-ui-modal__button:focus-visible,.app-ui-modal__close:focus-visible{outline:3px solid rgba(26,92,56,.2);outline-offset:2px}
.app-ui-modal__button--primary{background:var(--ui-modal-green);color:#fff}
.app-ui-modal__button--danger{background:var(--ui-modal-red);color:#fff}
.app-ui-modal__close{position:absolute;top:15px;right:15px;width:34px;height:34px;border:0;border-radius:10px;background:#f1f5f2;color:#5d7065;font-size:23px;line-height:1;cursor:pointer;display:grid;place-items:center;padding:0}
body.app-ui-modal-open{overflow:hidden}
@media(max-width:600px){
 .app-ui-modal{display:grid;place-items:center;padding:16px}
 .app-ui-modal__dialog{width:min(100%,430px);max-height:calc(100dvh - 32px);border-radius:22px;padding:24px 20px 20px;transform:translateY(14px) scale(.98)}
 .app-ui-modal.is-open .app-ui-modal__dialog{transform:none}
 .app-ui-modal__icon{width:48px;height:48px;border-radius:15px;margin-bottom:14px;font-size:24px}
 .app-ui-modal__title{font-size:20px;padding-inline:20px}
 .app-ui-modal__message{font-size:13px;line-height:1.6}
 .app-ui-modal__actions{margin-top:20px;gap:9px}
 .app-ui-modal__button{min-height:46px;padding-inline:12px;font-size:13px}
 .app-ui-modal__close{top:12px;right:12px}
}
@media(max-width:360px){
 .app-ui-modal{padding:12px}
 .app-ui-modal__dialog{max-height:calc(100dvh - 24px);padding:22px 16px 16px;border-radius:20px}
 .app-ui-modal__actions{flex-direction:column-reverse}
 .app-ui-modal__button{width:100%;flex:none}
}
