/* App-Sperre */
html.locked body > *:not(.lock) { visibility: hidden !important; }
.lock { position: fixed; inset: 0; z-index: 100; background: var(--bg); color: var(--text); display: flex; align-items: center; justify-content: center; padding: calc(env(safe-area-inset-top) + 20px) 24px calc(env(safe-area-inset-bottom) + 20px); }
.lock[hidden] { display: none; }
.lock-box { width: 100%; max-width: 340px; text-align: center; }
.lock-icon { width: 36px; height: 36px; color: var(--muted); }
.lock h2 { margin: 10px 0 6px; font-size: 24px; font-weight: 800; }
.lock p { margin: 0; color: var(--muted); font-size: 15px; min-height: 20px; }
.lock .lock-err { color: var(--minus-text); font-weight: 650; min-height: 22px; margin-top: 10px; }
.lock-dots { display: flex; justify-content: center; gap: 16px; margin: 28px 0 26px; }
.lock-dots i { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--text); transition: background .1s; }
.lock-dots i.on { background: var(--text); }
.lock-pad { display: grid; grid-template-columns: repeat(3, 76px); gap: 16px 24px; justify-content: center; }
.lock-pad button { width: 76px; height: 76px; border-radius: 50%; background: var(--card); box-shadow: var(--shadow); font-size: 28px; font-weight: 500; }
.lock-pad button:active { background: var(--key-press); }
.lock-pw { display: flex; gap: 8px; margin-top: 26px; }
.lock-pw input { flex: 1; min-width: 0; font: inherit; font-size: 17px; color: var(--text); background: var(--card); border: 0; box-shadow: var(--shadow); border-radius: 16px; padding: 14px; outline: none; user-select: text; -webkit-user-select: text; }
.lock-pw button { width: 64px; border-radius: 16px; background: var(--text); color: var(--bg); font-weight: 800; }
.lock-foot { display: flex; justify-content: space-between; margin-top: 18px; }
.lock-foot button { color: var(--muted); font-size: 15px; padding: 10px 4px; }
.lock-foot button[hidden] { visibility: hidden; display: inline; }
.rescue-code { margin: 26px 0 18px; padding: 18px; border-radius: 20px; background: var(--card); box-shadow: var(--shadow); font: 800 34px/1.1 ui-monospace, "SF Mono", Consolas, monospace; letter-spacing: 3px; user-select: text; -webkit-user-select: text; }
.rescue-ok { width: 100%; height: 52px; border-radius: 18px; background: var(--text); color: var(--bg); font-weight: 800; font-size: 16px; }
.lock-choices { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0 8px; }
.lock-choices .setting-action { font-size: 14px; padding: 10px 6px; }
.shake { animation: lockshake .35s; }
@keyframes lockshake { 20%, 60% { transform: translateX(-10px); } 40%, 80% { transform: translateX(10px); } }
