body.contend-viewport-locked {
    overflow: hidden;
}

body.contend-viewport-locked > *:not(#contend-viewport-gate) {
    visibility: hidden;
}

#contend-viewport-gate {
    position: fixed;
    inset: 0;
    z-index: 2147483647;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: linear-gradient(155deg, #0f172a 0%, #111827 60%, #1f2937 100%);
}

body.contend-viewport-locked #contend-viewport-gate {
    display: flex;
    visibility: visible;
}

#contend-viewport-gate .contend-viewport-gate__card {
    width: 100%;
    max-width: 520px;
    padding: 32px 28px;
    border-radius: 20px;
    border: 1px solid #334155;
    background: #ffffff;
    box-shadow: 0 20px 40px rgba(2, 6, 23, 0.25);
    text-align: left;
}

#contend-viewport-gate h2 {
    margin: 0 0 12px;
    color: #0f172a;
    font-size: 1.5rem;
    line-height: 1.25;
}

#contend-viewport-gate p {
    margin: 0;
    color: #334155;
    font-size: 1rem;
    line-height: 1.5;
}

/* ── Landscape gate ── */
#contend-landscape-gate {
    position: fixed;
    inset: 0;
    z-index: 2147483646;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 40px;
    background: #0f172a;
    text-align: center;
}

#contend-landscape-gate .contend-landscape__icon {
    font-size: 48px;
    animation: contend-rotate-hint 2s ease-in-out infinite;
}

#contend-landscape-gate h2 {
    font-size: 1.25rem;
    color: #fff;
    margin: 12px 0 8px;
}

#contend-landscape-gate p {
    font-size: 0.85rem;
    color: rgba(255,255,255,0.5);
    margin: 0;
}

@keyframes contend-rotate-hint {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(-90deg); }
    75% { transform: rotate(-90deg); }
}
