/* PWA · iOS 홈 화면 레이아웃 보정 */
html:has(body.app-body),
html:has(body.login-body) {
    height: 100%;
    min-height: -webkit-fill-available;
}

body.app-body,
body.login-body {
    min-height: 100%;
    min-height: -webkit-fill-available;
}

/* standalone(홈 화면 추가) — 100dvh는 iOS에서 하단이 비는 경우가 있어 inset 고정 */
@media (display-mode: standalone) {
    body.app-body {
        overscroll-behavior: none;
    }

    .app-shell {
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        height: auto;
        min-height: 100%;
        min-height: -webkit-fill-available;
    }
}

/* PWA 설치·푸시 안내 배너 */
.app-pwa-banner {
    position: fixed;
    left: 12px;
    right: 12px;
    bottom: calc(var(--app-nav-h, 56px) + var(--app-safe-bottom, env(safe-area-inset-bottom, 0px)) + 10px);
    z-index: 1200;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 14px 16px;
    border-radius: 14px;
    background: var(--app-card-bg, #1e293b);
    color: var(--app-text, #f8fafc);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.28);
    border: 1px solid var(--app-border, rgba(255, 255, 255, 0.08));
    transform: translateY(120%);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.28s ease, opacity 0.28s ease;
}

.app-pwa-banner.is-visible {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
}

.app-pwa-banner__icon {
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    object-fit: cover;
}

.app-pwa-banner__body {
    flex: 1;
    min-width: 0;
}

.app-pwa-banner__title {
    margin: 0 0 4px;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.3;
    color: var(--app-text, #f8fafc);
}

.app-pwa-banner__desc {
    margin: 0;
    font-size: 13px;
    line-height: 1.45;
    color: color-mix(in srgb, var(--app-text, #f8fafc) 78%, transparent);
}

.app-pwa-banner__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 10px;
}

.app-pwa-banner__btn {
    appearance: none;
    border: none;
    border-radius: 8px;
    padding: 8px 12px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
}

.app-pwa-banner__btn--primary {
    background: var(--app-accent, #38bdf8);
    color: #0f172a;
}

.app-pwa-banner__btn--ghost {
    background: transparent;
    color: var(--app-text, #f8fafc);
    border: 1px solid color-mix(in srgb, var(--app-text, #f8fafc) 20%, transparent);
}

.app-pwa-banner__close {
    flex: 0 0 auto;
    appearance: none;
    border: none;
    background: transparent;
    color: var(--app-text, #f8fafc);
    font-size: 18px;
    line-height: 1;
    padding: 2px 0 0 4px;
    cursor: pointer;
}

.app-body--blind-live .app-pwa-banner {
    bottom: calc(var(--app-nav-h, 56px) + var(--app-safe-bottom, env(safe-area-inset-bottom, 0px)) + 10px);
}

@media (min-width: 640px) {
    .app-pwa-banner {
        left: 50%;
        right: auto;
        width: min(420px, calc(100% - 24px));
        transform: translate(-50%, 120%);
    }

    .app-pwa-banner.is-visible {
        transform: translate(-50%, 0);
    }
}
