/* 标题页：三个按钮；存档位选择；角色创建。固定 760×366 册页 */
body:not(.playing) #panel.on { z-index: 40; }
#title .t-sheet { gap: calc(8*var(--u)); padding-top: calc(16*var(--u)); padding-bottom: calc(12*var(--u)); }
#title .t-btn.pri { height: calc(50*var(--u)); font-size: calc(25*var(--u)) !important; }
#title .t-btn:not(.pri) { height: calc(42*var(--u)); font-size: calc(21*var(--u)) !important; }
#title #btn-cloud span { font-size: calc(9*var(--u)); }

#panel .pbox.tt29box, #panel .pbox.cr29box { overflow: hidden; }
.tt29 { height: 100%; box-sizing: border-box; padding: 8px 10px 4px; border: 8px solid transparent; border-image: url(../../assets/v29/ui/ui_well.png) 12 fill stretch; overflow: hidden; display: flex; flex-direction: column; gap: 6px; }
.tt29-cs { flex: 1; min-height: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.tt29-sl { position: relative; min-width: 0; min-height: 0; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 6px 8px 4px; border: 8px solid transparent; border-image: url(../../assets/v29/ui/ui_card_raise.png) 12 fill stretch; background: none; font-family: "Noto Sans SC", sans-serif; color: var(--ink-1, #2a2620); cursor: pointer; text-align: center; overflow: hidden; }
.tt29-sl:disabled { cursor: default; opacity: .6; }
.tt29-no { position: absolute; left: 4px; top: 4px; z-index: 1; display: grid; place-items: center; width: 24px; height: 24px; font: normal 400 14px/1 "猫田楷", serif; color: #f6ecd4; background: #a8392b; border-radius: 3px; transform: rotate(-4deg); box-shadow: 0 1px 2px rgba(0,0,0,.3); }
.tt29-pic { flex: none; width: 96px; height: 78px; display: grid; place-items: center; border: 5px solid transparent; border-image: url(../../assets/v29/ui/ui_cell_idle.png) 12 fill stretch; box-sizing: border-box; width: 104px; height: 80px; }
.tt29-pic canvas { width: 76px; height: 70px; image-rendering: pixelated; }
.tt29-pic em { font: normal 400 34px/1 "猫田楷", serif; color: var(--ink-3, #7a6c52); opacity: .6; }
.tt29-sl > b { font: 400 21px/1.1 "猫田楷", serif; letter-spacing: 4px; margin-top: 2px; }
.tt29-sl.empty > b { color: var(--ink-3, #7a6c52); }
.tt29-f { align-self: stretch; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: 32px; }
.tt29-f .gd29-fact b { font-size: 12px; }
.tt29-sl > p { margin: 0; font-size: 12px; line-height: 18px; color: var(--ink-3, #7a6c52); flex: 1; display: flex; align-items: center; }
.tt29-go { margin-top: auto; align-self: stretch; height: 30px; display: grid; place-items: center; pointer-events: none; }
.tt29-nt { flex: none; margin: 0; padding-top: 3px; border-top: 1px dashed var(--paper-edge, #c4b48a); font-size: 11.5px; line-height: 16px; color: var(--ink-3, #7a6c52); text-align: center; }

.cr29 { height: 100%; box-sizing: border-box; padding: 8px 10px; border: 8px solid transparent; border-image: url(../../assets/v29/ui/ui_well.png) 12 fill stretch; overflow: hidden; display: flex; gap: 12px; }
.cr29-l { flex: none; width: 300px; display: flex; flex-direction: column; gap: 6px; align-items: center; justify-content: center; border: 8px solid transparent; border-image: url(../../assets/v29/ui/ui_card_raise.png) 12 fill stretch; }
.cr29-st { display: flex; align-items: center; gap: 4px; }
.cr29-st canvas { width: 168px; height: 168px; image-rendering: pixelated; cursor: pointer; }
.cr29-ar { flex: none; width: 34px; height: 56px; display: grid; place-items: center; padding: 0; background: linear-gradient(#fbf3dc, #e9dcb6); border: 1px solid var(--paper-edge, #b9a780); border-radius: 5px; box-shadow: 0 1px 0 rgba(255,255,255,.7) inset, 0 1px 2px rgba(0,0,0,.25); cursor: pointer; }
.cr29-ar i { width: 0; height: 0; border-top: 9px solid transparent; border-bottom: 9px solid transparent; }
.cr29-ar.l i { border-right: 12px solid #a8392b; } .cr29-ar.r i { border-left: 12px solid #a8392b; }
.cr29-cn { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.cr29-cn b { font: 400 22px/1.1 "猫田楷", serif; letter-spacing: 6px; }
.cr29-cn small { display: flex; gap: 6px; } .cr29-cn small i { width: 7px; height: 7px; border-radius: 50%; background: var(--ink-3, #7a6c52); opacity: .35; } .cr29-cn small i.on { background: #a8392b; opacity: 1; }
.cr29-r { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 8px 12px; border: 8px solid transparent; border-image: url(../../assets/v29/ui/ui_card_raise.png) 12 fill stretch; overflow: hidden; }
.cr29-f { flex: none; display: flex; flex-direction: column; gap: 4px; }
.cr29-f > small { font-size: 11px; letter-spacing: 3px; color: var(--ink-3, #7a6c52); }
.cr29-pl { height: 36px; display: grid; place-items: center; border: 1px solid var(--paper-edge, #b9a780); border-radius: 4px; background: var(--paper-hi, #fbf3dc); box-shadow: 0 1px 2px rgba(60,44,24,.18) inset; }
.cr29-pl input { width: 80%; height: 30px; text-align: center; font: 400 21px/1 "猫田楷", serif; letter-spacing: 6px; color: var(--ink-1, #2a2620); background: transparent; border: 0; outline: 0; }
.cr29-fc { flex: 1; min-height: 0; }
.cr29-sw { flex: 1; min-height: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 4px; }
.cr29-s { min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; padding: 0 0 2px; background: none; border: 6px solid transparent; border-image: url(../../assets/v29/ui/ui_cell_idle.png) 12 fill stretch; font-family: "Noto Sans SC", sans-serif; color: var(--ink-2, #4a3f2e); cursor: pointer; }
.cr29-s canvas { width: 44px; height: 32px; image-rendering: pixelated; }
.cr29-s b { font: 400 13px/1 "猫田楷", serif; letter-spacing: 2px; }
.cr29-s.on { border-image-source: url(../../assets/v29/ui/ui_cell_on.png); }
.cr29-s.on b { color: #a8392b; }
.cr29-s:active { transform: translateY(1px); }
.cr29-ft { flex: none; display: flex; align-items: center; gap: 10px; height: 40px; }
.cr29-rnd { flex: none; width: 96px; height: 34px; }
.cr29-ok { flex: 1; height: 40px; display: flex; align-items: center; justify-content: center; gap: 10px; padding: 0 12px; color: #f6ecd4; font: 400 17px/1 "猫田楷", serif; letter-spacing: 4px; background: linear-gradient(#b8463a, #8f2e24); border: 1px solid #6f2018; border-radius: 5px; box-shadow: 0 1px 0 rgba(255,255,255,.3) inset, 0 2px 3px rgba(0,0,0,.3); cursor: pointer; }
.cr29-ok i { font: normal 400 22px/1 "猫田楷", serif; width: 28px; height: 28px; display: grid; place-items: center; border: 1.5px solid #f6ecd4; border-radius: 3px; transform: rotate(-4deg); }
.cr29-ok:active { transform: translateY(1px); }
.cr29-nt { flex: none; margin: 0; font-size: 11.5px; text-align: center; color: var(--ink-3, #7a6c52); }

/* 反馈交流群 */
.fb29-chip { position: absolute; left: calc(14*var(--u)); bottom: calc(34*var(--u)); z-index: 6; display: flex; align-items: center; gap: calc(6*var(--u)); height: calc(26*var(--u)); padding: 0 calc(10*var(--u)) 0 calc(4*var(--u)); font: 400 calc(13*var(--u))/1 "猫田楷", serif; letter-spacing: calc(2*var(--u)); color: #3a3022; background: linear-gradient(#f8efd6, #e6d8b0); border: 1px solid #a89870; border-radius: calc(5*var(--u)); box-shadow: 0 1px 0 rgba(255,255,255,.7) inset, 0 2px 4px rgba(0,0,0,.3); cursor: pointer; }
.fb29-chip i { display: grid; place-items: center; width: calc(18*var(--u)); height: calc(18*var(--u)); font: normal 400 calc(12*var(--u))/1 "猫田楷", serif; color: #f6ecd4; background: #a8392b; border-radius: 3px; transform: rotate(-4deg); }
.fb29-chip:active { transform: translateY(1px); }
.fb29-m { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 60; display: grid; place-items: center; background: rgba(30,24,16,.55); }
.fb29-c { position: relative; box-sizing: border-box; width: min(340px, 90vw); padding: 22px 22px 16px; display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; color: #2a2620; border: 12px solid transparent; border-image: url(../../assets/v29/ui/ui_card_raise.png) 12 fill stretch; font-family: "Noto Sans SC", sans-serif; }
.fb29-c h3 { margin: 0; font: 400 22px/1.1 "猫田楷", serif; letter-spacing: 6px; }
.fb29-c p { margin: 0; font-size: 12.5px; line-height: 18px; color: #6a5c42; }
.fb29-seal { position: absolute; left: 6px; top: 6px; width: 24px; height: 24px; display: grid; place-items: center; font: normal 400 15px/1 "猫田楷", serif; color: #f6ecd4; background: #a8392b; border-radius: 3px; transform: rotate(-4deg); }
.fb29-x { position: absolute; right: 4px; top: 2px; width: 30px; height: 30px; padding: 0; font-size: 24px; line-height: 1; background: none; border: 0; color: #4a3f2e; cursor: pointer; }
.fb29-no { align-self: stretch; display: flex; flex-direction: column; gap: 3px; padding: 8px 0; border: 1px solid #c4b48a; border-radius: 4px; background: #fbf3dc; box-shadow: 0 1px 2px rgba(60,44,24,.18) inset; }
.fb29-no small { font-size: 11px; letter-spacing: 3px; color: #7a6c52; }
.fb29-no b { font: 400 28px/1.1 "猫田楷", serif; letter-spacing: 4px; user-select: all; -webkit-user-select: all; }
.fb29-cp { width: 150px; height: 34px; }
.fb29-ms { min-height: 16px; font-style: normal; font-size: 12px; color: #4f6a3a; }
.tt29-go { box-sizing: border-box; height: 30px; padding: 0 6px; border-width: 0; background: linear-gradient(#3e4a47,#2b3532); border-radius: 5px; color: #f3ead2; font-size: 14px; letter-spacing: 3px; box-shadow: 0 1px 0 rgba(255,255,255,.25) inset, 0 2px 3px rgba(0,0,0,.3); border-image: none; }
.tt29-go.off { background: #b9ad8f; color: #efe6cc; box-shadow: none; }
.tt29-go > span { top: 0; line-height: 1; }

.cr29-fn { flex-direction: row; align-items: center; gap: 10px; }
.cr29-fn > small { flex: none; }
.cr29-fn .cr29-pl { flex: 1; }
.cr29-r { gap: 7px; }
.cr29-s { gap: 0; border-width: 5px; }
.cr29-s canvas { width: 44px; height: 28px; }
.cr29-s b { font-size: 12px; }
