.app-notifications { position: fixed; top: 96px; right: 20px; z-index: 10050; width: min(390px, calc(100vw - 32px)); max-height: calc(100vh - 112px); overflow-y: auto; display: flex; flex-direction: column; gap: 12px; pointer-events: none; font-family: 'Comfortaa', sans-serif; }
.app-notice { display: flex; align-items: flex-start; gap: 12px; padding: 18px; border: 1px solid #dfe8ed; border-left: 4px solid #16835b; border-radius: 16px; background: #fff; color: #21526d; box-shadow: 0 12px 40px rgba(20,40,55,.18); pointer-events: auto; animation: app-notice-enter .2s ease-out; }
.app-notice--error { border-left-color: #c63939; }.app-notice--warning { border-left-color: #b67917; }.app-notice--info { border-left-color: #21526d; }
.app-notice__icon { display: grid; place-items: center; flex: 0 0 26px; height: 26px; border-radius: 50%; background: #e7f6ef; color: #16835b; font-size: 17px; font-weight: 700; }
.app-notice--error .app-notice__icon { background: #fcebec; color: #c63939; }.app-notice--warning .app-notice__icon { background: #fff5df; color: #a46d16; }.app-notice--info .app-notice__icon { background: #edf3f6; color: #21526d; }
.app-notice__body { flex: 1; min-width: 0; }.app-notice__title { margin: 0 0 5px; font-size: 13px; font-weight: 700; }.app-notice__message { margin: 0; font-size: 12px; line-height: 1.7; overflow-wrap: anywhere; }
.app-notice__close { flex: 0 0 28px; height: 28px; border: 0; border-radius: 7px; background: transparent; color: #587080; cursor: pointer; font-size: 22px; line-height: 1; }.app-notice__close:hover { background: #edf3f6; }.app-notice__close:focus-visible { outline: 2px solid #21526d; outline-offset: 2px; }
.app-notice-fallback { padding: 14px 20px; background: #edf3f6; color: #21526d; border-radius: 12px; }
@keyframes app-notice-enter { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
.app-notice--leaving { animation: app-notice-exit .35s cubic-bezier(.4,0,.2,1) forwards; pointer-events: none; }
@keyframes app-notice-exit { from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(32px); } }
@media(max-width: 639px) { .app-notifications { top: 84px; right: 16px; }.app-notice { padding: 14px; } }
@media(prefers-reduced-motion: reduce) { .app-notice { animation: none; } }
.app-confirm { position: fixed; inset: 0; margin: auto; max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px); overflow-y: auto; width: min(440px, calc(100vw - 32px)); box-sizing: border-box; border: 0; border-radius: 20px; padding: 28px; color: #21526d; background: #fff; box-shadow: 0 24px 80px rgba(20,40,55,.3); font-family: 'Comfortaa',sans-serif; }
.app-confirm::backdrop { background: rgba(15,30,45,.55); }
.app-confirm h2 { margin: 0 0 16px; font-size: 19px; font-weight: 700; }.app-confirm p { margin: 0; font-size: 14px; line-height: 1.7; }
.app-confirm__actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: flex-end; margin-top: 26px; }.app-confirm__actions button { padding: 12px 18px; border: 1px solid #dfe8ed; border-radius: 12px; background: #edf3f6; color: #21526d; cursor: pointer; font-size: 13px; font-weight: 600; }.app-confirm__actions .app-confirm__proceed { color: #fff; background: #21526d; border-color: #21526d; }.app-confirm__actions button:focus-visible { outline: 3px solid #8eaebb; outline-offset: 3px; }
input[aria-invalid="true"], select[aria-invalid="true"], textarea[aria-invalid="true"] { outline: 2px solid #c63939; outline-offset: 2px; }
