/* Reader, cloud copy: hide what only the Mac can do (import, voices, settings, render, export). */
.cloud #b-settings, .cloud #b-add, .cloud [data-open="voice"], .cloud [data-chap-more],
.cloud [data-act="voice"], .cloud [data-act="retry"], .cloud .chaps ~ .group-label, .cloud .chaps ~ .group { display: none !important; }

/* passcode screen */
.gate-body { margin: 0; min-height: 100vh; min-height: 100dvh; display: grid; place-items: center;
  background: #fff; color: #1d1d1f; font: 17px/1.4 -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, sans-serif;
  -webkit-font-smoothing: antialiased; padding: env(safe-area-inset-top) 24px env(safe-area-inset-bottom); }
@media (prefers-color-scheme: dark) { .gate-body { background: #000; color: #f5f5f7; } }
.gate { width: min(340px, 100%); text-align: center; }
.gate-icon { border-radius: 19px; box-shadow: 0 8px 28px rgba(0,0,0,.18); }
.gate h1 { font: 700 34px/1.1 -apple-system, BlinkMacSystemFont, "SF Pro Display", system-ui, sans-serif;
  letter-spacing: -.02em; margin: 22px 0 6px; }
.gate-sub { margin: 0 0 28px; color: #6e6e73; font-size: 15px; }
#gate-form { display: grid; gap: 12px; }
#gate-code { font: inherit; font-size: 17px; height: 50px; padding: 0 16px; border-radius: 12px; border: 0; outline: none;
  background: rgba(118,118,128,.12); color: inherit; text-align: center; letter-spacing: .08em; }
#gate-code:focus { box-shadow: 0 0 0 3px rgba(0,122,255,.35); }
#gate-go { font: 600 17px/1 -apple-system, BlinkMacSystemFont, system-ui, sans-serif; height: 50px; border: 0; border-radius: 12px;
  background: #0a84ff; color: #fff; cursor: pointer; transition: transform .1s ease-out, opacity .2s; }
#gate-go:active { transform: scale(.97); }
#gate-go:disabled { opacity: .5; }
.gate-err { margin: 2px 0 0; color: #ff3b30; font-size: 14px; }
.shake { animation: gate-shake .42s cubic-bezier(.36,.07,.19,.97); }
@keyframes gate-shake { 15%, 55% { transform: translateX(-8px); } 35%, 75% { transform: translateX(8px); } 90% { transform: translateX(-3px); } }
@media (prefers-reduced-motion: reduce) { .shake { animation: none; } }
