.hub-push-overlay,.hub-push-notice{--push-accent:#a78bfa;--push-button:#7952d5;--push-button-text:#fff;--push-surface:#111728;--push-border:#39304e;--push-soft:#211d37;--push-text:#f5f5fa;--push-muted:#bdc1d0;font-family:inherit;color:var(--push-text);box-sizing:border-box}
.hub-push-overlay[data-brand="progibudget"],.hub-push-notice[data-brand="progibudget"]{--push-accent:#b49be8;--push-button:#047857;--push-surface:#131620;--push-border:#3e354e;--push-soft:#272033}
.hub-push-overlay[data-brand="invent"],.hub-push-notice[data-brand="invent"]{--push-accent:#f5cc64;--push-button:#edc35b;--push-button-text:#19160b;--push-surface:#171a1e;--push-border:#4b4028;--push-soft:#302a1d}
.hub-push-overlay[data-brand="grh"],.hub-push-notice[data-brand="grh"]{--push-accent:#98a9ff;--push-button:#405bd9;--push-surface:#101722;--push-border:#303e64;--push-soft:#1a2540}
.hub-push-overlay[data-brand="paiement"],.hub-push-notice[data-brand="paiement"]{--push-accent:#c597f1;--push-button:#8f2fea;--push-surface:#121323;--push-border:#45305c;--push-soft:#291b3d}
.hub-push-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;padding-top:max(20px,env(safe-area-inset-top));padding-bottom:max(20px,env(safe-area-inset-bottom));background:rgb(4 7 14 / .76);backdrop-filter:blur(8px);overscroll-behavior:contain;animation:hub-push-fade .18s ease-out}
.hub-push-overlay *{box-sizing:border-box}
.hub-push-panel{position:relative;width:min(100%,450px);min-width:0;max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain;border:1px solid var(--push-border);border-radius:26px;padding:30px 28px 22px;background:var(--push-surface);box-shadow:0 26px 90px rgb(0 0 0 / .4);text-align:center;overflow-wrap:anywhere;animation:hub-push-enter .22s ease-out;outline:none}
.hub-push-close{position:absolute;top:10px;right:10px;display:grid;place-items:center;width:44px;height:44px;padding:11px;border:1px solid transparent;border-radius:14px;background:transparent;color:var(--push-muted);cursor:pointer}
.hub-push-close:hover{background:var(--push-soft);color:var(--push-text)}
.hub-push-close svg{width:22px;height:22px}
.hub-push-visual{position:relative;display:grid;place-items:center;width:100px;height:100px;margin:0 auto 10px}
.hub-push-orbit{position:absolute;inset:0;border:1px solid var(--push-border);border-radius:50%;transform:rotate(-16deg)}
.hub-push-orbit:after{content:'';position:absolute;top:8px;right:16px;width:7px;height:7px;border-radius:50%;background:var(--push-accent)}
.hub-push-bell{position:relative;display:grid;place-items:center;width:74px;height:74px;border-radius:24px;background:var(--push-soft);color:var(--push-accent)}
.hub-push-bell svg{width:37px;height:37px;transform-origin:50% 15%;animation:hub-push-ring .8s ease-in-out .25s}
.hub-push-bell i{position:absolute;right:12px;top:12px;width:9px;height:9px;border:2px solid var(--push-surface);border-radius:50%;background:var(--push-accent)}
.hub-push-panel .hub-push-brand{margin:16px 0 8px;font-size:12px;font-weight:800;line-height:1.5;letter-spacing:.09em;text-transform:uppercase;color:var(--push-accent)}
.hub-push-panel h2{margin:0 0 12px;font-size:clamp(21px,5.7vw,26px);font-weight:800;line-height:1.2;letter-spacing:-.025em;color:var(--push-text)}
.hub-push-panel #hub-push-description{margin:0;font-size:15px;line-height:1.65;color:var(--push-muted)}
.hub-push-panel .hub-push-reassurance{display:flex;align-items:center;justify-content:center;gap:8px;margin:18px 0 22px;font-size:12px;line-height:1.5;color:var(--push-muted)}
.hub-push-reassurance svg{width:17px;height:17px;flex-shrink:0;color:var(--push-accent)}
.hub-push-actions{display:grid;gap:9px}
.hub-push-actions button{width:100%;min-width:0;min-height:48px;padding:12px 16px;border-radius:13px;font:inherit;font-size:14px;font-weight:750;line-height:1.4;white-space:normal;cursor:pointer;transition:filter .15s,background .15s;touch-action:manipulation}
.hub-push-actions .hub-push-activate{border:1px solid transparent;background:var(--push-button);color:var(--push-button-text)}
.hub-push-actions .hub-push-activate:hover{filter:brightness(1.1)}
.hub-push-actions .hub-push-later{border:1px solid var(--push-border);background:transparent;color:var(--push-muted)}
.hub-push-actions .hub-push-later:hover{background:var(--push-soft);color:var(--push-text)}
.hub-push-panel button:focus-visible{outline:2px solid var(--push-accent);outline-offset:3px}
.hub-push-actions button:disabled{opacity:.65;cursor:wait}
.hub-push-panel .hub-push-footnote{margin:16px 0 0;font-size:11px;line-height:1.5;color:var(--push-muted)}
.hub-push-panel .hub-push-error{margin:0 0 16px;padding:12px;border:1px solid #7f4545;border-radius:12px;background:#321c24;color:#ffd6d6;text-align:left;font-size:13px;line-height:1.6}
.hub-push-error[hidden]{display:none}
.hub-push-notice{position:fixed;z-index:1100;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);padding:14px 18px;border:1px solid var(--push-border);border-radius:14px;background:var(--push-surface);box-shadow:0 10px 40px #0005;font-size:14px;line-height:1.6;overflow-wrap:anywhere;animation:hub-push-fade .2s ease-out}
@keyframes hub-push-fade{from{opacity:0}to{opacity:1}}
@keyframes hub-push-enter{from{opacity:0;transform:translateY(9px) scale(.98)}to{opacity:1;transform:none}}
@keyframes hub-push-ring{0%,100%{transform:rotate(0)}25%{transform:rotate(10deg)}65%{transform:rotate(-8deg)}}
@media(max-width:360px){.hub-push-overlay{padding:16px}.hub-push-panel{padding:26px 20px 20px;max-height:calc(100dvh - 32px);border-radius:22px}.hub-push-visual{width:86px;height:86px}.hub-push-panel #hub-push-description{font-size:14px}}
@media(max-height:600px){.hub-push-visual{width:64px;height:64px}.hub-push-bell{width:54px;height:54px;border-radius:18px}.hub-push-bell svg{width:29px;height:29px}.hub-push-panel{padding-top:22px}.hub-push-panel .hub-push-reassurance{margin:12px 0}}
@media(prefers-reduced-motion:reduce){.hub-push-overlay,.hub-push-panel,.hub-push-bell svg,.hub-push-notice{animation:none}.hub-push-actions button{transition:none}}
