.pwa-toast{z-index:95;left:50%;bottom:max(16px, env(safe-area-inset-bottom));background:var(--color-surface);width:min(100vw - 32px,460px);color:var(--color-text);border:1px solid var(--color-border-strong);animation:arrive var(--dur-ui) var(--ease-out) backwards;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:12px 14px;display:flex;position:fixed;translate:-50%}.pwa-toast p{flex:12rem;margin:0;font-size:14px;font-weight:600}.pwa-toast button{min-height:44px;padding:0 16px;font-size:13px;font-weight:600}.pwa-toast-action{background:var(--color-action);color:var(--color-on-action);box-shadow:inset 0 0 0 1px var(--color-action-edge)}.pwa-toast-later{color:var(--color-text);background:0 0}.pwa-toast button:focus-visible,.pwa-install:focus-visible{outline-offset:3px;outline:2px solid}.pwa-install{width:fit-content;color:inherit;font:inherit;text-align:left;background:0 0;border:0;padding:0}.pwa-install-row{justify-content:space-between;align-items:center;width:100%;padding:10px 0;font-size:12px;display:flex}@media (pointer:coarse){.pwa-install{min-height:44px}}.pwa-banner{z-index:70;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));max-width:460px;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);box-shadow:var(--popover-shadow);animation:pwaBannerIn var(--dur-sheet) var(--ease-drawer) backwards;align-items:center;gap:12px;margin-inline:auto;padding:10px 8px 10px 12px;display:flex;position:fixed}:is(html:has(.tabbar) .pwa-banner,html:has(.tabbar) .pwa-toast){bottom:calc(var(--tabbar-offset) + 12px)}.pwa-banner[data-leaving]{animation:pwaBannerOut var(--dur-exit) var(--ease-out) both;pointer-events:none}.pwa-banner-icon{width:40px;height:40px;color:var(--on-yellow);background:var(--yellow);border-radius:var(--radius-xs);flex:none;place-items:center;display:grid}.pwa-banner-copy{flex:1;gap:1px;min-width:0;display:grid}.pwa-banner-copy strong{font-size:14px}.pwa-banner-copy small{color:var(--color-text-muted);font-size:12px;line-height:1.35}.pwa-banner-action{min-height:44px;color:var(--color-on-action);background:var(--color-action);box-shadow:inset 0 0 0 1px var(--color-action-edge);border-radius:var(--radius-full);transition:transform var(--dur-press) var(--ease-out);border:0;padding:0 14px;font-size:13px;font-weight:600}.pwa-banner-action:active,.pwa-sheet-action:active{transform:scale(.97)}.pwa-banner-close{width:44px;height:44px;color:var(--color-text-muted);background:0 0;border:0;place-items:center;display:grid}.pwa-banner button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (min-width:900px){.pwa-banner{display:none}}@keyframes pwaBannerIn{0%{opacity:0;transform:translateY(16px)}}@keyframes pwaBannerOut{to{opacity:0;transform:translateY(16px)}}.pwa-sheet{gap:16px;padding:8px 20px 4px;display:grid}.pwa-steps{gap:12px;margin:0;padding:0;list-style:none;display:grid}.pwa-steps li{background:var(--color-surface-2);border-radius:var(--radius-sm);align-items:center;gap:14px;padding:12px;font-size:15px;line-height:1.4;display:flex}.pwa-steps small{color:var(--color-text-muted);letter-spacing:.06em;text-transform:uppercase;font-size:11px;font-weight:700;display:block}.pwa-step-icon{width:44px;height:44px;color:var(--color-accent);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-xs);flex:none;place-items:center;display:grid}.pwa-note{margin:0;font-size:15px;line-height:1.5}.pwa-sheet-action,.pwa-sheet-quiet{border-radius:var(--radius-full);min-height:48px;transition:transform var(--dur-press) var(--ease-out);font-size:14px;font-weight:600}.pwa-sheet-action{color:var(--color-on-action);background:var(--color-action);border:1px solid var(--color-action-edge)}.pwa-sheet-quiet{color:var(--color-text);background:0 0;border:0}@media (prefers-reduced-motion:reduce){.pwa-toast,.pwa-banner,.pwa-banner[data-leaving]{animation:none}}.pwa-inline-icon{vertical-align:-3px;margin-inline:2px;display:inline-block}
