.cp-pwa-tools { position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 1040; display: flex; flex-direction: column; gap: 10px; color: var(--cp-react-text, #23445d); font: 13px/1.5 Arial, sans-serif; }
.cp-pwa-tools .cp-pwa-fab { position: relative; display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid var(--cp-react-border, #c9d7e1); border-radius: 50%; background: var(--cp-react-panel, #fff); color: var(--cp-react-primary, #086ca8); box-shadow: 0 3px 12px rgb(17 24 32 / 12%); cursor: pointer; }
.cp-pwa-tools .cp-pwa-fab[data-cp-install] { position: fixed; left: max(16px, env(safe-area-inset-left)); bottom: calc(16px + env(safe-area-inset-bottom)); }
.cp-pwa-tools [data-cp-install] .cp-pwa-tooltip { right: auto; left: calc(100% + 9px); }
.cp-pwa-fab > .fa, .cp-pwa-fab > svg { width: 20px; height: 20px; font-size: 20px; line-height: 20px; }
.cp-pwa-tools .cp-pwa-fab:hover { border-color: currentColor; background: var(--cp-react-soft, #eef7fc); }
.cp-pwa-update-dot { position: absolute; top: 2px; right: 2px; width: 9px; height: 9px; border: 2px solid var(--cp-react-panel, #fff); border-radius: 50%; background: var(--cp-react-success, #13855e); }
.cp-pwa-tooltip { position: absolute; right: calc(100% + 9px); top: 50%; transform: translateY(-50%); width: max-content; max-width: 220px; padding: 5px 9px; border: 1px solid var(--cp-react-border, #c9d7e1); border-radius: 4px; background: var(--cp-react-panel, #fff); color: var(--cp-react-text, #23445d); opacity: 0; visibility: hidden; pointer-events: none; }
.cp-pwa-fab:hover .cp-pwa-tooltip, .cp-pwa-fab:focus-visible .cp-pwa-tooltip { opacity: 1; visibility: visible; }
.cp-pwa-announcement { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.cp-pwa-menu-action { border: 0; background: transparent; color: var(--cp-react-primary, #086ca8); cursor: pointer; font: inherit; }
.cp-pwa-menu-action { display: block; width: 100%; padding: 10px 20px; text-align: left; text-decoration: none; }
[data-cp-theme="dark"] .cp-pwa-tools, [data-cp-theme="dark"] .cp-pwa-dialog { --cp-react-panel: #131d26; --cp-react-text: #e1edf3; --cp-react-border: #3b4d5a; --cp-react-primary: #8fcdf0; --cp-react-soft: #243947; }
.cp-pwa-tools [hidden], [data-cp-install][hidden], [data-cp-install-container][hidden] { display: none !important; }
.cp-pwa-dialog { box-sizing: border-box; width: min(420px, calc(100% - 24px)); max-height: calc(min(100dvh, var(--cp-dialog-viewport-height, 100dvh)) - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); overflow: hidden; margin: auto; padding: 0; border: 1px solid var(--cp-react-border, #dce4e9); border-top: 3px solid var(--cp-react-primary, #1674b8); border-radius: 8px; background: var(--cp-react-panel, #fff); color: var(--cp-react-text, #172633); font: 13px/1.5 Arial, sans-serif; }
.cp-pwa-dialog[open] { display: flex; flex-direction: column; }
.cp-pwa-dialog::backdrop { background: rgb(17 24 32 / 55%); backdrop-filter: blur(3px); }
.cp-pwa-dialog .cp-dialog-header { display: flex; flex: 0 0 auto; align-items: center; gap: 10px; padding: 12px 14px; border-bottom: 1px solid var(--cp-react-border, #dce4e9); }
.cp-pwa-dialog[open] .cp-dialog-header > .cp-dialog-symbol { display: inline-flex; flex: 0 0 32px; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 6px; background: var(--cp-react-soft, #eef7fc); color: var(--cp-react-primary, #1674b8); }
.cp-pwa-dialog .cp-dialog-symbol > svg { width: 18px; height: 18px; }
.cp-pwa-dialog h2 { flex: 1; min-width: 0; margin: 0; font-size: 16px; font-weight: 600; line-height: 1.35; }
.cp-pwa-dialog .cp-dialog-body { flex: 0 1 auto; min-height: 0; padding: 14px; overflow-y: auto; overscroll-behavior: contain; }
.cp-pwa-dialog p { margin: 0; }
.cp-pwa-dialog p + p:not(:empty) { margin-top: 10px; }
.cp-pwa-dialog [data-cp-update-status]:empty { display: none; }
.cp-pwa-dialog form.cp-dialog-actions { display: flex; flex: 0 0 auto; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin: 0; padding: 10px 14px; border-top: 1px solid var(--cp-react-border, #dce4e9); background: var(--cp-react-soft, #f7fafc); }
.cp-pwa-dialog button { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 40px; padding: 8px 12px; border: 1px solid var(--cp-react-border, #c9d7e1); border-radius: 5px; background: var(--cp-react-panel, #fff); color: inherit; font: 600 13px/1.3 Arial, sans-serif; cursor: pointer; }
.cp-pwa-dialog button > .fa { font-size: 17px; }
.cp-pwa-dialog button.cp-pwa-close { flex: 0 0 40px; width: 40px; padding: 0; border-color: transparent; background: transparent; color: var(--cp-react-muted, #667784); }
.cp-pwa-dialog button.cp-dialog-primary { border-color: var(--cp-react-primary, #1674b8); background: var(--cp-react-primary, #1674b8); color: var(--cp-dialog-primary-text, #fff); }
.cp-pwa-dialog button:disabled { opacity: .55; cursor: wait; }
[data-cp-theme="dark"] .cp-pwa-dialog { --cp-dialog-primary-text: #102a3b; }
@media (max-width: 600px) { .cp-pwa-dialog button { min-height: 44px; } }
.cp-pwa-dialog button:focus-visible, .cp-pwa-tools button:focus-visible, .cp-pwa-menu-action:focus-visible { outline: 2px solid #086ca8; outline-offset: 3px; }
/* Reserve a landing area at the end of content, so floating controls cannot cover the last action. */
body:not(.contipay-admin):has(.cp-pwa-fab:not([hidden])) { padding-bottom: 116px; }
.contipay-admin:has(.cp-pwa-fab:not([hidden])) #content { padding-bottom: 116px; }
@media (max-width: 900px) {
    .contipay-admin .cp-pwa-tools { bottom: calc(var(--cp-mobile-bar-height, 64px) + env(safe-area-inset-bottom) + 12px); }
    .contipay-admin .cp-pwa-tools .cp-pwa-fab[data-cp-install] { bottom: calc(var(--cp-mobile-bar-height, 64px) + env(safe-area-inset-bottom) + 12px); }
    .contipay-admin:has(.cp-pwa-fab:not([hidden])) #content { padding-bottom: calc(var(--cp-mobile-bar-height, 64px) + env(safe-area-inset-bottom) + 116px) !important; }
}
@media (display-mode: standalone) { [data-cp-install], [data-cp-install-container] { display: none !important; } }
