.ubq-banner,.ubq-panel{font-family:var(--ubq-font,inherit);color:var(--ubq-text,#1a1a1a);box-sizing:border-box}
.ubq-banner *,.ubq-panel *{box-sizing:border-box}
.ubq-banner{position:fixed;z-index:2147483000;left:24px;bottom:24px;width:min(440px,calc(100vw - 48px));background:var(--ubq-surface,#fff);border-radius:var(--ubq-radius,12px);box-shadow:0 12px 40px rgba(5,31,26,.18);padding:24px}
.ubq-banner--bottom{left:24px;right:24px;width:auto}
.ubq-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 0 8px}.ubq-banner__close{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin:-6px -6px 0 0;padding:0;border:2px solid var(--ubq-accent,#1f6feb);border-radius:999px;background:transparent;color:var(--ubq-accent,#1f6feb);position:relative;font-size:0;cursor:pointer;transition:background .15s,color .15s}.ubq-banner__close::before,.ubq-banner__close::after{content:"";position:absolute;top:50%;left:50%;width:16px;height:2px;margin:-1px 0 0 -8px;border-radius:2px;background:currentColor}.ubq-banner__close::before{transform:rotate(45deg)}.ubq-banner__close::after{transform:rotate(-45deg)}.ubq-banner__close:hover{background:var(--ubq-accent,#1f6feb);color:var(--ubq-accent-text,#fff)}
.ubq-banner__title{margin:0;padding-top:4px;font-size:18px;font-weight:700;line-height:1.3}
.ubq-banner__text{margin:0 0 16px;font-size:14px;line-height:1.55;color:var(--ubq-muted,#555)}
.ubq-banner__text a,.ubq-panel a{color:inherit;text-decoration:underline}
.ubq-banner__actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ubq-btn{min-height:44px;padding:0 18px;border:2px solid var(--ubq-accent,#1f6feb);border-radius:999px;background:var(--ubq-accent,#1f6feb);color:var(--ubq-accent-text,#fff);font-weight:600;font-size:14px;line-height:1;font-family:var(--ubq-font,inherit);cursor:pointer}
.ubq-btn--outline{background:transparent;color:var(--ubq-text,#1a1a1a)}
.ubq-btn--link{border-color:transparent;background:transparent;color:var(--ubq-text,#1a1a1a);text-decoration:underline;padding:0 8px}
.ubq-btn:focus-visible,.ubq-banner__close:focus-visible,.ubq-switch input:focus-visible+span{outline:2px solid var(--ubq-accent,#1f6feb);outline-offset:3px}
.ubq-panel{position:fixed;inset:0;z-index:2147483001;display:none;align-items:center;justify-content:center;background:rgba(5,31,26,.45);padding:16px}
.ubq-panel__dialog{position:relative;width:min(560px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--ubq-surface,#fff);border-radius:var(--ubq-radius,12px);padding:28px}
.ubq-cat{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:16px 0;border-top:1px solid rgba(0,0,0,.08)}
.ubq-cat p{margin:4px 0 0;font-size:14px;color:var(--ubq-muted,#555)}
.ubq-cat__always{font-size:13px;font-weight:600;white-space:nowrap;color:var(--ubq-muted,#555)}
.ubq-switch{position:relative;display:inline-block;width:48px;height:28px;flex:0 0 auto}
.ubq-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.ubq-switch span:first-of-type{pointer-events:none;position:absolute;inset:0;border-radius:999px;background:#8a9a96;transition:background .2s}
.ubq-switch span:first-of-type::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s}
.ubq-switch input:checked+span{background:var(--ubq-accent,#1f6feb)}
.ubq-switch input:checked+span::after{transform:translateX(20px)}
.ubq-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ubq-panel__dialog .ubq-banner__actions{margin-top:20px}
@media (min-width:640px){.ubq-banner__actions .ubq-btn:not(.ubq-btn--link):not(.ubq-btn--outline){flex:1 1 0;min-width:0}}
@media (max-width:639px){.ubq-banner,.ubq-banner--bottom{left:0;right:0;bottom:0;width:100%;border-radius:var(--ubq-radius,12px) var(--ubq-radius,12px) 0 0}.ubq-banner__actions{flex-direction:column;align-items:stretch}.ubq-btn{width:100%}}
@media (prefers-reduced-motion:reduce){.ubq-switch span:first-of-type,.ubq-switch span:first-of-type::after,.ubq-banner__close{transition:none}}
