/* 浮层·手机竖屏版（docs/MOBILE_UI_PLAN.md 第 4 节、第 6 节第 2 期）。
   旧的居中弹窗（openModal）和降旨、密查，在手机上一律穿成全屏页（.ov-page）：左上返回（js/sheet.js 补的 .ov-back），
   正文单独滚，底下那排按钮贴在拇指底下，背后不透字。识人卡是底部抽屉；确认框仍是居中小框。
   电脑上不变（第 4 期再统一）。 */

.ov-back { display: none; }

/* 内帑里的账号表单使用深色面板配色，长按钮在窄屏可换行。 */
.wallet .auth { padding: 14px 0; }
.wallet .auth input { min-width: 0; width: 100%; color: var(--paper); background: rgba(0, 0, 0, 0.25); border-color: var(--gold-dim); }
.wallet .auth input::placeholder { color: var(--dim); opacity: 1; }
.wallet .auth input:focus { background: rgba(0, 0, 0, 0.4); border-color: var(--gold); }
.wallet .auth .note { color: var(--dim); }
.wallet .auth .gbtn { white-space: normal; letter-spacing: 0.05em; }

@media (max-width: 860px) {
  .ov-back {
    display: grid; place-items: center; position: fixed; z-index: 5; top: calc(var(--safe-t) + 6px); left: 6px;
    width: var(--tap); height: var(--tap); padding: 0; border: 0; border-radius: 50%;
    background: rgba(12, 8, 6, 0.6); color: var(--gold-bright); font: 32px/1 var(--f-serif);
  }
  .ov-back:active { background: rgba(201, 161, 74, 0.18); }

  /* ——全屏页：除确认框、识人卡以外的弹窗—— */
  .modal-wrap.ov-page {
    align-items: stretch; padding: 0 0 var(--kb); background: var(--ink); backdrop-filter: none; -webkit-backdrop-filter: none;
  }
  .modal-wrap.ov-page .modal-box,
  .ui-frame .modal-wrap.ov-page .modal-box {
    width: 100%; height: 100%; max-height: none; padding: calc(var(--safe-t) + 12px) 16px 0;
    border: 0; border-image: none; border-radius: 0; box-shadow: none;
    background: radial-gradient(ellipse at 50% 0%, rgba(122, 23, 18, 0.16), transparent 55%), linear-gradient(180deg, #1a110c, #0d0907);
  }
  .modal-wrap.ov-page .box-title { margin: 4px 44px 16px; font-size: 26px; line-height: 44px; }
  /* 底下那排按钮：内容短时也落在屏底，长时贴底不随正文滚走 */
  .modal-wrap.ov-page .modal-box { display: flex; flex-direction: column; }
  .modal-wrap.ov-page .modal-box > :has(> .row.end) { flex: 1 0 auto; display: flex; flex-direction: column; }
  .modal-wrap.ov-page .modal-box > :has(> .row.end) > .row.end { margin-top: auto; }
  .modal-wrap:is(.ov-page, .dossier-wrap) .modal-box .row.end {
    position: sticky; bottom: 0; z-index: 4; margin: 20px -16px 0; flex: none; padding: 10px 16px calc(10px + var(--safe-b));
    background: linear-gradient(0deg, rgba(10, 6, 4, 0.98) 70%, rgba(10, 6, 4, 0.9)); border-top: 1px solid var(--line);
  }
  .modal-wrap:is(.ov-page, .dossier-wrap) .modal-box .row.end .gbtn { flex: 1 1 0; min-height: 48px; }
  .modal-box h4 { font-size: 19px; }
  .modal-box .note { font-size: 13.5px; }

  /* 设置：手机上没有键盘快捷键 */
  .settings .note { display: none; }
  .settings .set-row { min-height: var(--tap); }

  /* 内帑：三档并排，一屏看全 */
  .w-packs { grid-template-columns: repeat(3, 1fr); gap: 8px; }
  .w-pack { padding: 10px 8px; }
  .w-pack b { font-size: 20px; }
  .w-pack .n { font-size: 15px; letter-spacing: 0.04em; }
  .w-pack span:last-child { font-size: 11px; }

  /* 心愿三选一：不透底下的御案，两颗按钮贴底 */
  .wish-deal { justify-content: center; padding: calc(var(--safe-t) + 16px) 12px calc(88px + var(--safe-b)); background: rgba(8, 5, 3, 0.97); }
  .wish-deal .wcard { --ww: min(30vw, 150px); }
  .wd-row { margin-top: 16px; }
  .wd-acts {
    position: fixed; left: 0; right: 0; bottom: 0; display: grid; grid-template-columns: 1fr 1.6fr; gap: 10px;
    padding: 10px 12px calc(10px + var(--safe-b)); background: rgba(10, 6, 4, 0.98); border-top: 1px solid var(--gold-dim);
  }
  .wd-acts .gbtn { min-height: 52px; }
  .wd-acts .gbtn.red { min-width: 0; }

  /* 朝局图：竖屏把图拉高，人散得开，横着少滑一点 */
  .cm-map { min-width: 600px; aspect-ratio: auto; height: max(420px, calc(100dvh - 300px)); }
  .chart h3 { margin: 4px 44px 10px; line-height: 44px; }

  /* ——识人卡：底部抽屉—— */
  .modal-wrap.dossier-wrap { align-items: flex-end; padding: 0 0 var(--kb); }
  .modal-wrap.dossier-wrap .modal-box, .ui-frame .modal-wrap.dossier-wrap .modal-box {
    width: 100%; max-height: calc(100dvh - var(--safe-t) - 24px); padding: 18px 16px 0;
    border-radius: 14px 14px 0 0; border-bottom: 0; border-image: none;
  }
  .modal-wrap.dossier-wrap .modal-box::before { content: ""; position: absolute; top: 7px; left: 50%; width: 40px; height: 5px; margin-left: -20px; border-radius: 3px; background: rgba(239, 228, 204, 0.25); }

  /* ——确认框：居中小框，按钮加高—— */
  .modal-wrap.small:not(.ov-page) .gbtn { min-height: 48px; min-width: 110px; }

  /* ——降旨、密查：全屏，不透字，按钮贴底—— */
  .decree-wrap {
    justify-content: flex-start; gap: 14px;
    padding: calc(var(--safe-t) + 56px) 12px calc(88px + max(var(--safe-b), var(--kb)));
    background: radial-gradient(ellipse at 50% 20%, #24170f, #0b0806 75%);
  }
  .decree-wrap > .row, .decree-wrap .ed-ctrl > .row {
    position: fixed; left: 0; right: 0; bottom: var(--kb); z-index: 4; margin: 0; display: grid; grid-template-columns: 1fr 1.6fr; gap: 10px;
    padding: 10px 12px calc(10px + var(--safe-b)); background: linear-gradient(0deg, rgba(10, 6, 4, 0.98), rgba(18, 12, 8, 0.95)); border-top: 1px solid var(--gold-dim);
  }
  .decree-wrap .row .gbtn { min-height: 52px; }
  .scroll { width: 100%; }
  .ed-ctrl { width: 100%; }
  .ed-tpls { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 0 -12px; padding: 2px 12px; }
  .ed-tpls::-webkit-scrollbar { display: none; }
  .ed-tpls .tpl, .inv-clues .tpl { flex: none; min-height: 36px; }
  .ed-tpls > em, .inv-clues > em { flex: none; align-self: center; white-space: nowrap; }
  .toggle { min-height: var(--tap); }
}
.auth .auth-feedback:empty { display: none; }
.auth .auth-feedback.is-error { color: #922b21; background: #f8e2d8; border: 1px solid #b86b56; border-radius: 3px; padding: 10px 12px; margin: 0; font-size: 14px; font-weight: 600; }
.auth [data-auth-submit]:disabled { opacity: 0.7; cursor: wait; }
