/* v1.0.27 ログイン保持・PIN／スワイプ式アプリロック */
.tm-login-retention-note{margin:14px 0;color:#64748b;font-size:12px;line-height:1.7}
.tm-unlock-card{width:min(100%,600px);text-align:center;padding:32px 24px}
.tm-unlock-card form{text-align:left}
.tm-unlock-submit{width:100%}
.tm-pattern-help{margin:12px 0 16px;color:#64748b;font-size:13px}
.tm-pattern-pad{position:relative;display:grid;grid-template-columns:repeat(3,minmax(96px,1fr));grid-template-rows:repeat(3,minmax(96px,1fr));justify-content:stretch;align-items:stretch;gap:20px;width:min(100%,480px);margin:18px auto 10px;touch-action:none;user-select:none;-webkit-user-select:none}
.tm-pattern-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.tm-pattern-lines polyline{fill:none;stroke:#2563eb;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;opacity:.62}
.tm-pattern-node{position:relative;z-index:2;display:grid;place-items:center;width:100%;min-width:0;aspect-ratio:1/1;border:1px solid #cbd5e1;border-radius:50%;background:#f8fafc;padding:0;touch-action:none}
.tm-pattern-node span{width:20px;height:20px;border-radius:50%;background:#94a3b8;box-shadow:0 0 0 8px rgba(148,163,184,.13)}
.tm-pattern-node.is-selected{border-color:#2563eb;background:#eff6ff}
.tm-pattern-node.is-selected span{background:#2563eb;box-shadow:0 0 0 10px rgba(37,99,235,.15)}
.tm-app-lock-settings{margin-top:22px;padding:20px;border:1px solid #dbe5f1;border-radius:18px;background:#f8fafc}
.tm-app-lock-settings>label{display:block;color:#334155;font-size:13px;font-weight:800}
.tm-app-lock-settings select,.tm-app-lock-settings input{display:block;width:100%;margin-top:7px;border:1px solid #cfd8e5;border-radius:13px;background:#fff;padding:12px 13px;color:#111827}
.tm-app-lock-credential{margin-top:16px;padding-top:16px;border-top:1px solid #e2e8f0}
.tm-app-lock-credential[hidden]{display:none!important}
.tm-app-lock-credential label{display:block;color:#334155;font-size:13px;font-weight:800}
.tm-app-lock-credential small,.tm-app-lock-note{display:block;margin:9px 0 0;color:#64748b;font-size:12px;line-height:1.7}
.tm-app-lock-credential p{margin:0 0 12px;color:#475569;font-size:13px}
.tm-pattern-status{margin-top:10px;color:#2563eb;font-size:12px;font-weight:800;text-align:center}
@media(max-width:600px){.tm-unlock-card{width:calc(100vw - 20px);padding:28px 16px}.tm-pattern-pad{width:min(100%,100%);grid-template-columns:repeat(3,minmax(86px,1fr));grid-template-rows:repeat(3,minmax(86px,1fr));gap:16px}.tm-pattern-node span{width:18px;height:18px;box-shadow:0 0 0 7px rgba(148,163,184,.13)}.tm-pattern-node.is-selected span{box-shadow:0 0 0 8px rgba(37,99,235,.15)}}
@media(max-width:420px){.tm-unlock-card{padding:24px 14px}.tm-pattern-pad{grid-template-columns:repeat(3,minmax(78px,1fr));grid-template-rows:repeat(3,minmax(78px,1fr));gap:12px}}

.tm-unlock-password-fallback{width:100%;margin-top:14px;font-size:12px}

/* v1.0.28 PWA・プッシュ通知 */
.tm-pwa-settings-card{margin-top:22px}
.tm-pwa-setting-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 0;border-top:1px solid #e2e8f0}
.tm-pwa-setting-row:first-of-type{border-top:0;padding-top:4px}
.tm-pwa-setting-row strong{display:block;color:#1e293b;font-size:14px}
.tm-pwa-setting-row p{margin:5px 0 0;color:#64748b;font-size:12px;line-height:1.65}
.tm-pwa-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.tm-pwa-setting-row button{min-width:150px;white-space:nowrap}
.tm-ghost-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 16px;border:1px solid #dbe5f1;border-radius:13px;background:#f8fafc;color:#475569;font-weight:800}
.tm-ghost-button:disabled,.tm-secondary-button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:680px){
  .tm-pwa-setting-row{align-items:stretch;flex-direction:column;gap:10px}
  .tm-pwa-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .tm-pwa-setting-row button{width:100%;min-width:0}
}


/* v1.0.33 PWA表示倍率の完全固定 */
html.tm-pwa-zoom-locked{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  touch-action:pan-x pan-y;
}
html.tm-pwa-zoom-locked body{
  touch-action:pan-x pan-y;
}
html.tm-pwa-zoom-locked input,
html.tm-pwa-zoom-locked select,
html.tm-pwa-zoom-locked textarea{
  font-size:16px!important;
}
@media(display-mode:standalone){
  html,body{
    -webkit-text-size-adjust:100%;
    text-size-adjust:100%;
    touch-action:pan-x pan-y;
  }
  input,select,textarea{font-size:16px!important}
}
