/* PWA Suite front-end styles */
.pwas-ui,.pwas-ui *{box-sizing:border-box}
.pwas-ui{font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:15px;line-height:1.4;color:#111827}

/* progress bar */
.pwas-bar{position:fixed;top:0;left:0;height:3px;width:0;background:var(--pwas-theme,#1d4ed8);z-index:2147483000;opacity:0;transition:width 8s cubic-bezier(.1,.7,.2,1),opacity .2s;pointer-events:none}

/* page transition */
html.pwas-leaving body{opacity:0;transition:opacity .14s ease}

/* pull to refresh */
html.pwas-ptr-on{overscroll-behavior-y:contain}
.pwas-ptr{position:fixed;top:0;left:50%;transform:translate(-50%,-50px);opacity:0;z-index:2147482000;background:#fff;color:#111827;border-radius:999px;padding:8px 16px;box-shadow:0 4px 14px rgba(0,0,0,.18);display:flex;gap:8px;align-items:center;font-size:13px;pointer-events:none;transition:opacity .15s}
.pwas-ptr-icon{display:inline-block;font-size:18px;transition:transform .2s}
.pwas-ptr.pwas-ready .pwas-ptr-icon{transform:rotate(180deg)}
.pwas-ptr.pwas-spin .pwas-ptr-icon{animation:pwas-spin .8s linear infinite}
@keyframes pwas-spin{to{transform:rotate(360deg)}}

/* toasts */
.pwas-toasts{position:fixed;left:0;right:0;bottom:calc(16px + env(safe-area-inset-bottom));z-index:2147483100;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;padding:0 16px}
body.pwas-has-nav .pwas-toasts{bottom:calc(76px + env(safe-area-inset-bottom))}
.pwas-toast{pointer-events:auto;background:#111827;color:#fff;padding:10px 16px;border-radius:12px;box-shadow:0 6px 20px rgba(0,0,0,.25);display:flex;gap:14px;align-items:center;max-width:460px;animation:pwas-in .2s ease}
.pwas-toast-btn{background:none;border:0;color:#93c5fd;font:600 14px inherit;cursor:pointer;padding:0}
@keyframes pwas-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* buttons */
.pwas-btn{appearance:none;border:1px solid #d1d5db;background:#fff;color:#111827;border-radius:999px;padding:9px 18px;font:600 14px/1.2 inherit;cursor:pointer}
.pwas-btn-primary{background:var(--pwas-theme,#1d4ed8);border-color:var(--pwas-theme,#1d4ed8);color:#fff}
.pwas-install-btn[hidden],.pwas-push-btn[hidden]{display:none!important}
.pwas-install-btn,.pwas-push-btn{appearance:none;border:0;border-radius:999px;padding:11px 22px;background:var(--pwas-theme,#1d4ed8);color:#fff;font:600 15px/1.2 inherit;cursor:pointer}

/* install banner / popup */
.pwas-install-box{position:fixed;z-index:2147483050;background:#fff;box-shadow:0 10px 40px rgba(0,0,0,.25);display:flex;gap:14px;align-items:center;animation:pwas-in .25s ease}
.pwas-install-box img{width:48px;height:48px;border-radius:12px;flex:none}
.pwas-install-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.pwas-install-text span{color:#4b5563;font-size:13px}
.pwas-install-actions{display:flex;gap:8px;flex:none}
.pwas-install-box.pwas-banner{left:12px;right:12px;border-radius:16px;padding:12px 14px;max-width:640px;margin:0 auto}
.pwas-install-box.pwas-banner.pwas-pos-bottom{bottom:calc(12px + env(safe-area-inset-bottom))}
body.pwas-has-nav .pwas-install-box.pwas-banner.pwas-pos-bottom{bottom:calc(76px + env(safe-area-inset-bottom))}
.pwas-install-box.pwas-banner.pwas-pos-top{top:calc(12px + env(safe-area-inset-top))}
.pwas-install-box.pwas-sheet{left:50%;top:50%;transform:translate(-50%,-50%);width:min(92vw,380px);flex-direction:column;text-align:center;padding:26px 22px;border-radius:20px}
.pwas-install-box.pwas-sheet img{width:72px;height:72px;border-radius:18px}
@media(max-width:520px){.pwas-install-box.pwas-banner{flex-wrap:wrap}.pwas-install-actions{width:100%;justify-content:flex-end}}
.pwas-install-float{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:2147482500;border:0;border-radius:999px;padding:12px 20px;background:var(--pwas-theme,#1d4ed8);color:#fff;font:600 14px inherit;box-shadow:0 6px 20px rgba(0,0,0,.3);cursor:pointer}
body.pwas-has-nav .pwas-install-float{bottom:calc(76px + env(safe-area-inset-bottom))}

/* modal */
.pwas-modal{position:fixed;inset:0;z-index:2147483200;background:rgba(17,24,39,.55);display:flex;align-items:center;justify-content:center;padding:20px}
.pwas-modal-card{background:#fff;border-radius:20px;padding:26px 22px 20px;max-width:380px;width:100%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.pwas-modal-card h2{margin:10px 0 6px;font-size:20px;color:#111827}
.pwas-modal-card p{margin:0;color:#4b5563}
.pwas-modal-icon{width:64px;height:64px;border-radius:16px}
.pwas-modal-actions{display:flex;gap:10px;justify-content:center;margin-top:20px}
.pwas-steps{text-align:start;margin:12px 0 0;padding-inline-start:22px;color:#374151}
.pwas-steps li{margin:6px 0}

/* floating buttons */
.pwas-fab{position:fixed;z-index:2147482400;width:46px;height:46px;border-radius:50%;border:0;background:var(--pwas-theme,#1d4ed8);color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.3);cursor:pointer;padding:0}
.pwas-fab-dark{left:14px;bottom:calc(14px + env(safe-area-inset-bottom))}
.pwas-fab-share{right:14px;bottom:calc(74px + env(safe-area-inset-bottom))}
.pwas-fab-bell{right:14px;bottom:calc(14px + env(safe-area-inset-bottom))}
body.pwas-has-nav-mobile .pwas-fab-dark,body.pwas-has-nav-mobile .pwas-fab-bell{bottom:calc(74px + env(safe-area-inset-bottom))}
body.pwas-has-nav-mobile .pwas-fab-share{bottom:calc(130px + env(safe-area-inset-bottom))}
@media(min-width:769px){body.pwas-has-nav-mobile .pwas-fab-dark,body.pwas-has-nav-mobile .pwas-fab-bell{bottom:14px}body.pwas-has-nav-mobile .pwas-fab-share{bottom:74px}}

/* bottom navigation */
.pwas-nav{position:fixed;left:0;right:0;bottom:0;z-index:2147482300;display:flex;background:#fff;border-top:1px solid #e5e7eb;padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -4px 16px rgba(0,0,0,.06)}
.pwas-nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 2px;color:#6b7280;text-decoration:none;font-size:11px;font-weight:600;min-width:0}
.pwas-nav a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pwas-nav a.is-active{color:var(--pwas-theme,#1d4ed8)}
body.pwas-has-nav{padding-bottom:calc(64px + env(safe-area-inset-bottom))!important}
@media(min-width:769px){.pwas-nav-mobile{display:none}body.pwas-has-nav-mobile{padding-bottom:0!important}}

/* generic dark mode (colour inversion; media and our own UI are inverted back) */
html.pwas-dark{filter:invert(1) hue-rotate(180deg);background:#fff;color-scheme:dark}
html.pwas-dark img,html.pwas-dark video,html.pwas-dark picture,html.pwas-dark canvas,html.pwas-dark iframe,html.pwas-dark svg image,html.pwas-dark [style*="background-image"],html.pwas-dark .pwas-ui{filter:invert(1) hue-rotate(180deg)}
html.pwas-dark .pwas-ui img{filter:none}
html.pwas-dark .pwas-ui .pwas-modal-icon,html.pwas-dark .pwas-install-box img{filter:none}

@media (prefers-reduced-motion:reduce){.pwas-bar,.pwas-toast,.pwas-install-box{animation:none;transition:none}}
