/* PWA online-first: utiliza los mismos tokens del sistema y respeta safe areas. */
.pwa-connection-guard{position:fixed;inset:0;z-index:100000;display:none;place-items:center;padding:calc(24px + env(safe-area-inset-top)) 24px calc(24px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--color-bg) 97%,transparent);color:var(--color-text)}
body[data-requires-online="true"]:not(.pwa-online-ready) .pwa-connection-guard{display:grid}.pwa-connection-card{width:min(100%,420px);padding:28px;border:1px solid var(--color-border);border-radius:22px;background:var(--color-surface);box-shadow:var(--shadow-soft);text-align:center}.pwa-connection-spinner{display:inline-block;width:44px;height:44px;margin-bottom:18px;border:4px solid color-mix(in srgb,var(--color-primary) 18%,transparent);border-top-color:var(--color-primary);border-radius:50%;animation:pwa-spin .8s linear infinite}.pwa-connection-guard.is-error .pwa-connection-spinner{width:52px;height:52px;border:0;animation:none}.pwa-connection-guard.is-error .pwa-connection-spinner::before{content:"!";display:grid;width:52px;height:52px;place-items:center;border-radius:16px;background:var(--color-secondary);color:var(--color-accent);font-size:1.7rem;font-weight:900}.pwa-connection-card h2{margin:0 0 10px;font-size:1.45rem;font-weight:850}.pwa-connection-card p{margin:0;color:var(--color-text-soft);line-height:1.5}.pwa-connection-retry{display:none;min-height:48px;margin-top:20px;padding:0 22px;border:0;border-radius:14px;background:var(--color-primary);color:var(--color-on-primary);font:inherit;font-weight:800}.pwa-connection-guard.is-error .pwa-connection-retry{display:inline-flex;align-items:center;justify-content:center}body.pwa-connection-blocked{overflow:hidden!important}[data-pwa-install][hidden]{display:none!important}@keyframes pwa-spin{to{transform:rotate(360deg)}}
.pwa-action-loader[hidden]{display:none!important}.pwa-action-loader{position:fixed;inset:0;z-index:99990;display:grid;place-items:center;padding:24px;background:rgba(0,0,0,.38);backdrop-filter:blur(3px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,visibility .18s ease}body.pwa-action-loading .pwa-action-loader{opacity:1;visibility:visible;pointer-events:auto}body.pwa-action-loading{overflow:hidden!important;cursor:progress}.pwa-action-card{width:min(100%,360px);padding:28px 24px 24px;border:1px solid var(--color-border);border-radius:22px;background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-strong);text-align:center}.pwa-action-spinner{display:inline-grid;width:58px;height:58px;margin-bottom:18px;place-items:center;border:5px solid color-mix(in srgb,var(--color-primary) 18%,transparent);border-top-color:var(--color-primary);border-radius:50%;animation:pwa-spin .8s linear infinite}.pwa-action-spinner span{width:20px;height:20px;border-radius:7px;background:var(--color-secondary)}.pwa-action-card h2{margin:0 0 8px;font-size:1.28rem;font-weight:850}.pwa-action-card p{margin:0;color:var(--color-text-soft);line-height:1.45}.pwa-action-dots{display:flex;justify-content:center;gap:6px;margin-top:18px}.pwa-action-dots span{width:7px;height:7px;border-radius:50%;background:var(--color-primary);animation:pwa-dot 1s ease-in-out infinite}.pwa-action-dots span:nth-child(2){animation-delay:.14s}.pwa-action-dots span:nth-child(3){animation-delay:.28s}@keyframes pwa-dot{0%,100%{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}
@media(display-mode:standalone){body{padding-top:env(safe-area-inset-top)}.solar-main-header{padding-top:calc(.75rem + env(safe-area-inset-top))}.sg-mobile-bottom-bar{padding-bottom:calc(.45rem + env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){.pwa-connection-spinner,.pwa-action-spinner,.pwa-action-dots span{animation-duration:1.6s}}
