.pwa-banner{position: fixed;z-index: 60;left: 12px;right: 12px;bottom: calc(12px + env(safe-area-inset-bottom,0px));display: grid;grid-template-columns: auto 1fr;grid-template-areas: "mark  title" "body  body" "actions actions";align-items: center;column-gap: 12px;row-gap: 10px;padding: 14px 16px;background: var(--bg-raised);border: 1px solid var(--edge);border-radius: var(--radius);box-shadow: 0 18px 40px rgba(0,0,0,0.55);transform: translateY(16px);opacity: 0;transition: transform 0.24s ease,opacity 0.24s ease;}.pwa-banner-in{transform: translateY(0);opacity: 1;}.pwa-banner-mark{grid-area: mark;display: block;width: 40px;height: 40px;}.pwa-banner-title{grid-area: title;font-size: 16px;font-weight: 650;}.pwa-banner-body{grid-area: body;font-size: 13px;color: var(--text-dim);min-width: 0;}.pwa-banner-actions{grid-area: actions;display: flex;gap: 8px;}.pwa-banner-actions button{flex: 1;min-height: 44px;padding-inline: 18px;border-radius: 999px;border: 1px solid transparent;font: inherit;font-weight: 600;letter-spacing: -0.01em;cursor: pointer;transition: translate 0.2s ease,box-shadow 0.2s ease,color 0.2s ease,border-color 0.2s ease,background 0.2s ease;}.pwa-banner-actions .pwa-banner-install{color: var(--bg,#0b0f16);background: linear-gradient(140deg,var(--accent-hi,#8ec5ff),var(--accent,#4da3ff));box-shadow: 0 1px 0 rgb(255 255 255 / 0.25) inset,0 6px 18px color-mix(in oklab,var(--accent-lo,#4d9fff) 30%,transparent);}.pwa-banner-actions .pwa-banner-install:hover{translate: 0 -1px;box-shadow: 0 1px 0 rgb(255 255 255 / 0.3) inset,0 10px 24px color-mix(in oklab,var(--accent-lo,#4d9fff) 42%,transparent);}.pwa-banner-actions .pwa-banner-dismiss{color: var(--text-dim,#8b98ad);background: none;border-color: var(--edge,#253044);}.pwa-banner-actions .pwa-banner-dismiss:hover{color: var(--text,#e8edf5);border-color: var(--accent,#4da3ff);background: color-mix(in oklab,var(--accent,#4da3ff) 8%,transparent);}.pwa-banner-actions button:focus-visible{outline: 2px solid var(--accent-hi,#8ec5ff);outline-offset: 2px;}@media (min-width: 620px){.pwa-banner{left: 12px;right: 12px;margin-inline: auto;max-width: 460px;grid-template-columns: auto 1fr auto;grid-template-areas: "mark title actions" "mark body  actions";row-gap: 2px;}.pwa-banner-actions button{flex: none;}}@media (prefers-reduced-motion: reduce){.pwa-banner{transition: none;transform: none;opacity: 1;}}