/* 猫田小日子 · 界面统一 第 1 批（v2.9）
   令牌 + 卡片 + 空间状态条 + 按钮。只作用在 .k29 / #sb29 / .bk29 上，不碰原有界面的样式。 */
:root {
  --paper: #f5efdc; --paper-hi: #fbf6e6; --paper-lo: #e9dfc6; --paper-edge: #d6c9a6;
  --ink: #2a2620; --ink-2: #5a5048; --ink-3: #86795f; --line: #6b5a42;
  --jade: #3f6a4c; --cinnabar: #a8392b; --cinnabar-lt: #a8584c; --gold-dk: #8c7442;
  --t-fast: 120ms; --t-mid: 220ms; --ease-in: cubic-bezier(.2,.7,.2,1);
  --k29: url(../../assets/v29/ui/);
}

/* ---------------------------------------------------------------- 卡片（设施 / 动物 / 人 同一个） */
#panel .pbox.k29box {
  width: min(660px, 94vw); height: min(340px, calc(100vh - 24px)); height: min(340px, calc(100dvh - 24px)); max-height: none; box-sizing: border-box;
  padding: 8px 12px 10px; overflow: hidden;
  background: none !important; box-shadow: 0 6px 18px rgba(29,31,27,.35) !important;
  border: 16px solid transparent !important; border-image: url(../../assets/v29/ui/ui_kit_card_frame.png) 24 fill stretch !important;
  image-rendering: pixelated; font-family: 'Noto Sans SC', sans-serif; color: var(--ink);
  animation: k29in var(--t-mid) var(--ease-in);
}
@keyframes k29in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
#panel .pbox.k29box .pclose {
  right: -10px; top: -12px; width: 40px; height: 40px; border: 0 !important; border-radius: 0 !important; font-size: 0 !important;
  background: url(../../assets/v29/ui/ui_op_close.png) center / 24px 24px no-repeat !important; image-rendering: pixelated;
}
.k29 { position: absolute; top: 8px; right: 12px; bottom: 10px; left: 12px; display: flex; flex-direction: column; gap: 8px; padding: 0; }
.k29-h { display: flex; align-items: center; gap: 10px; height: 34px; padding-right: 30px; border-bottom: 1px solid var(--paper-edge); }
.k29-seal { flex: none; width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; font-style: normal;
  background: url(../../assets/art_v25r1/ui_bk_seal_title.png) center / 28px 28px no-repeat; image-rendering: pixelated;
  font-family: "猫田楷", serif; font-size: 17px; color: #a8392b; }
.k29-h h3::before { content: none !important; display: none !important; }
.k29-h h3 { margin: 0; font-family: "猫田楷", serif; font-weight: 400; font-size: 24px; letter-spacing: 4px; color: var(--ink); white-space: nowrap; }
.k29-h span { font-size: 13px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.k29-b { flex: 1; min-height: 0; display: flex; gap: 14px; }
.k29-l { flex: none; width: 200px; display: flex; flex-direction: column; gap: 6px; min-height: 0; }
.k29-pic { flex: none; height: 74px; display: flex; align-items: center; justify-content: center;
  border: 8px solid transparent; border-image: url(../../assets/v29/ui/ui_kit_section.png) 8 fill stretch; image-rendering: pixelated; }
.k29-pic img { max-width: 100%; max-height: 58px; image-rendering: pixelated; }
.k29-say { font-size: 13px; line-height: 1.5; color: var(--ink); border: 8px solid transparent; border-image: url(../../assets/v29/ui/ui_kit_section.png) 8 fill stretch; padding: 0 2px; }
.k29-rows { display: flex; flex-direction: column; gap: 5px; margin: 0; padding: 0; list-style: none; }
.k29-rows li { display: flex; align-items: center; gap: 6px; height: 20px; font-size: 13px; color: var(--ink-2); }
.k29-rows li > i { flex: none; width: 20px; height: 20px; background: center / 20px 20px no-repeat; image-rendering: pixelated; }
.k29-rows li > em { margin-left: auto; font-style: normal; display: flex; gap: 2px; align-items: center; }
.k29-rows li > b { margin-left: auto; font-size: 14px; color: var(--ink); font-variant-numeric: tabular-nums; }
.k29-rows li > b.warn, .k29-rows li.warn > span { color: var(--cinnabar); }
.k29-pip { width: 10px; height: 12px; background: url(../../assets/v29/ui/ui_pip_cell.png) 0 0 / 30px 12px no-repeat; image-rendering: pixelated; }
.k29-pip.o { background-position: -10px 0; } .k29-pip.r { background-position: -20px 0; }
.k29-heart { width: 12px; height: 12px; background: url(../../assets/v29/ui/ui_heart.png) 0 0 / 36px 12px no-repeat; image-rendering: pixelated; }
.k29-heart.h { background-position: -12px 0; } .k29-heart.o { background-position: -24px 0; }
.k29-r { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; gap: 6px; overflow: hidden; }
.k29-g { display: flex; flex-direction: column; gap: 4px; }
.k29-g > small { font-size: 12px; color: var(--ink-3); letter-spacing: .12em; }
.k29-gr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.k29-note.warn { color: var(--cinnabar); white-space: normal; }
.k29-note { margin: auto 0 0; font-size: 12px; color: var(--ink-3); line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 待办清单：该照料的事 + 去哪做（不远程照料） */
.k29-todo { gap: 3px; }
.k29-td { display: flex; align-items: center; gap: 8px; height: 26px; padding: 0 2px; border: 6px solid transparent; border-image: url(../../assets/v29/ui/ui_kit_section.png) 8 fill stretch; image-rendering: pixelated; }
.k29-td i { flex: none; width: 20px; height: 20px; background: center / 20px 20px no-repeat; image-rendering: pixelated; }
.k29-td b { font-size: 14px; font-weight: 600; color: var(--cinnabar); }
.k29-td span { margin-left: auto; font-size: 12px; color: var(--ink-3); white-space: nowrap; }
.k29-td.ok b { color: var(--jade); }
.k29-td.more { height: 18px; border: 0; } .k29-td.more span { margin: 0; }

/* ---------------------------------------------------------------- 按钮：一种按钮四种状态 */
.k29-btn, #sb29 .sb29-mg { position: relative; display: flex; align-items: center; justify-content: center; gap: 6px; min-width: 0;
  height: 34px; padding: 0 6px; box-sizing: border-box; cursor: pointer; font: 15px 'Noto Sans SC', sans-serif; letter-spacing: 1px; white-space: nowrap;
  color: var(--ink); background: none; border: 12px solid transparent; border-image: url(../../assets/v29/ui/ui_rb_sec.png) 14 fill stretch;
  image-rendering: pixelated; transition: transform var(--t-fast); }
.k29-btn > span { position: relative; top: -1px; }
.k29-btn small { font-size: 12px; color: var(--ink-3); }
.k29-btn:active { border-image-source: url(../../assets/v29/ui/ui_rb_sec_down.png); }
.k29-btn:active > span { top: 1px; }
.k29-btn.pri { color: #fbf6e6; border-image-source: url(../../assets/v29/ui/ui_rb_pri.png); }
.k29-btn.pri small { color: #d6c9a6; }
.k29-btn.pri:active { border-image-source: url(../../assets/v29/ui/ui_rb_pri_down.png); }
.k29-btn.warn { color: var(--cinnabar); border-image-source: url(../../assets/v29/ui/ui_rb_warn.png); }
.k29-btn.warn:active { border-image-source: url(../../assets/v29/ui/ui_rb_warn_down.png); }
.k29-btn.off { color: var(--ink-3); border-image-source: url(../../assets/v29/ui/ui_rb_off.png); opacity: .8; cursor: default; }
.k29-btn.off small { color: var(--cinnabar-lt); }
.k29-btn .dot { position: absolute; top: -10px; right: -10px; width: 10px; height: 10px; background: url(../../assets/v29/ui/ui_op_badge.png) center / 10px 10px no-repeat; image-rendering: pixelated; }

/* ---------------------------------------------------------------- 空间状态条（鸡棚、牛栏同一个） */
#hs-coop-status, #barn262, #barn262.on { display: none !important; }
#sb29 { position: fixed; left: 50%; top: calc(8px + var(--android-safe-top, 0px)); transform: translateX(-50%); z-index: 45; display: none;
  align-items: center; gap: 6px; height: 40px; padding: 0 2px 0 2px; box-sizing: border-box;
  border: 12px solid transparent; border-image: url(../../assets/v29/ui/ui_kit_statusbar.png) 12 fill stretch; image-rendering: pixelated;
  font-family: 'Noto Sans SC', sans-serif; color: var(--ink-2); white-space: nowrap; }
#sb29.on { display: flex; animation: sb29in var(--t-mid) var(--ease-in); }
@keyframes sb29in { from { opacity: 0; transform: translate(-50%, -6px); } to { opacity: 1; transform: translateX(-50%); } }
#sb29 .sb29-seal { width: 24px; height: 24px; margin: 0 -4px 0 -8px; display: flex; align-items: center; justify-content: center; font-style: normal;
  background: url(../../assets/art_v25r1/ui_bk_seal_title.png) center / 24px 24px no-repeat; image-rendering: pixelated; font-family: "猫田楷", serif; font-size: 14px; color: #a8392b; }
#sb29 > b { font-family: "猫田楷", serif; font-weight: 400; font-size: 17px; color: var(--ink); letter-spacing: 2px; }
#sb29 .sb29-m { display: flex; align-items: center; gap: 2px; font-size: 12px; }
#sb29 .sb29-m > i { width: 18px; height: 18px; margin-right: 2px; background: center / 18px 18px no-repeat; image-rendering: pixelated; }
#sb29 .sb29-m em { display: flex; gap: 2px; font-style: normal; margin-left: 2px; }
#sb29 .sb29-m b { font-size: 13px; color: var(--ink); font-variant-numeric: tabular-nums; margin-left: 2px; }
#sb29 .sb29-m b.warn { color: var(--cinnabar); }
#sb29 .sb29-mg { height: 30px; padding: 0 2px; font-size: 14px; color: #fbf6e6; border-width: 10px; border-image: url(../../assets/v29/ui/ui_rb_pri.png) 14 fill stretch; pointer-events: auto; }
#sb29 .sb29-mg:active { border-image-source: url(../../assets/v29/ui/ui_rb_pri_down.png); }
#sb29 .sb29-mg i { width: 18px; height: 18px; background: url(../../assets/v29/ui/ui_op_manage.png) center / 18px 18px no-repeat; image-rendering: pixelated; }

/* ---------------------------------------------------------------- 营造册：信息签固定三格、去掉「看图」 */
.pbox.bk262.bk29 #bk-more { display: none !important; }
.pbox.bk262.bk29 .bk-info span { flex: 1; text-align: center; }
.pbox.bk262.bk29 .bk-info span.warn { color: var(--cinnabar); }
.pbox.bk262.bk29 .k29-why { margin: 2px 0 0; font-size: 12px; color: var(--cinnabar); text-align: center; }

@media (max-height: 380px) {
  #panel .pbox.k29box { padding: 8px 12px 10px; }
  .k29-pic { height: 76px; } .k29-pic img { max-height: 60px; }
  .k29-btn { height: 32px; font-size: 14px; }
  .k29-r, .k29-l { gap: 5px; }
}

/* ---------------------------------------------------------------- 营造册等老面板：外框、页签、按钮也收成圆角 */
.pbox.bk262.bk29 { border-radius: 16px; clip-path: inset(0 round 16px); }
.pbox.bk262.bk29 .pclose { right: 8px; top: 6px; }
.pbox.bk262.bk29 .bk-tab { border-radius: 8px 8px 0 0 !important; }
.pbox.bk262.bk29 .actions226 button { border: 12px solid transparent !important; border-image: url(../../assets/v29/ui/ui_rb_sec.png) 14 fill stretch !important; background: none !important; box-shadow: none !important; image-rendering: pixelated; color: var(--ink); }
.pbox.bk262.bk29 .actions226 button.pri, .pbox.bk262.bk29 #new226 { border-image-source: url(../../assets/v29/ui/ui_rb_pri.png) !important; color: #fbf6e6; }
.pbox.bk262.bk29 .actions226 button:active { border-image-source: url(../../assets/v29/ui/ui_rb_sec_down.png) !important; }
.pbox.bk262.bk29 .actions226 button:disabled { border-image-source: url(../../assets/v29/ui/ui_rb_off.png) !important; color: var(--ink-3); opacity: .85; }

/* ================================================================ 规格：L 号面板（营造册 / 名册 / 指南 / 灶台 / 商店 / 工作台 / 储物 共用） */
:root { --L-w: min(760px, 96vw); --L-h: min(366px, calc(100vh - 20px)); }
.pbox.l29 { width: var(--L-w) !important; height: var(--L-h) !important; max-height: none !important; min-height: 0 !important; box-sizing: border-box; }
/* 营造册：固定 4×2 格子，所有格子一样大 */
.pbox.bk263.bk29 { display: flex !important; flex-direction: column; }
.pbox.bk263.bk29 .bk-main { grid-template-columns: minmax(0, 1fr) 252px !important; gap: 12px; }
.pbox.bk263.bk29 .bk-grid2.g4x2 { grid-template: repeat(2, minmax(0, 1fr)) / repeat(4, minmax(0, 1fr)) !important; gap: 8px; align-content: stretch; }
.pbox.bk263.bk29 .bk-card2 { position: relative; height: 100% !important; justify-content: center !important; gap: 2px; padding: 6px 2px 4px !important; overflow: visible; }
.pbox.bk263.bk29 .bk-card2 canvas { flex: none !important; width: 100% !important; height: 56px !important; }
.pbox.bk263.bk29 .bk-card2 b { font-size: 14px; letter-spacing: 1px; }
.pbox.bk263.bk29 .bk-card2 small { font-size: 11px; }
.bk29-empty { border: 2px dashed rgba(107,90,66,.28); border-radius: 10px; background: rgba(233,223,198,.35); }
/* 状态：实色小牌，字清楚 */
.pbox.bk263.bk29 .bk-card2 .stamp { position: absolute !important; right: 6px !important; top: 6px !important; left: auto !important; transform: none !important; width: auto !important; height: 18px !important; line-height: 18px !important; padding: 0 6px; border-radius: 9px; background-image: none !important; font-size: 12px !important; font-weight: 700; letter-spacing: 0 !important; color: #fbf6e6 !important; }
.pbox.bk263.bk29 .st-can { background: #3f6a4c !important; } .pbox.bk263.bk29 .st-short { background: #a8392b !important; }
.pbox.bk263.bk29 .st-skill { background: #6b5a42 !important; } .pbox.bk263.bk29 .st-built { background: #5a5048 !important; }
.pbox.bk263.bk29 .bk-dh .stamp { width: auto !important; height: 20px !important; line-height: 20px !important; padding: 0 8px; border-radius: 10px; background-image: none !important; font-size: 12px !important; color: #fbf6e6 !important; }
/* 右栏：名称 / 说明 / 占地与前置 / 材料 / 操作 */
.pbox.bk263.bk29 .bk-right { overflow: hidden !important; }
.bk29-meta { display: flex; gap: 6px; margin: 0 0 4px; font-size: 12px; color: var(--ink-2); }
.bk29-meta span:empty { display: none; } .bk29-meta span + span::before { content: "· "; color: var(--ink-3); } .bk29-meta .bad { color: var(--cinnabar); }
.bk29-pre { display: flex; align-items: center; justify-content: space-between; gap: 6px; height: 26px; padding: 0 8px; margin: 0 0 4px; border-radius: 8px; font-size: 13px; background: rgba(168,57,43,.10); border: 1px solid rgba(168,57,43,.45); color: var(--cinnabar); }
.bk29-pre.ok { background: rgba(63,106,76,.10); border-color: rgba(63,106,76,.45); color: var(--jade); }
.bk29-pre b { font-weight: 600; } .bk29-pre span { font-weight: 700; }
.pbox.bk263.bk29 .bk-need { display: block !important; font-size: 11px; margin: 0 0 2px; padding-top: 2px; }
.pbox.bk263.bk29 .actions226 { display: flex !important; flex-direction: row !important; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 6px; margin-top: auto !important; }
.pbox.bk263.bk29 .actions226 button { width: auto !important; min-width: 104px; flex: 0 0 auto !important; padding: 0 14px !important; height: 34px; }
.pbox.bk263.bk29 .bk-one { -webkit-line-clamp: 3; max-height: 4.4em; }

.pbox.bk263.bk29 .bk-need { display: none !important; }
.pbox.bk263.bk29 .bn-mats { gap: 2px; margin: 0 0 4px; }
.pbox.bk263.bk29 .bn-mat { height: 24px; }
.pbox.bk263.bk29 .bk-one { -webkit-line-clamp: 2; max-height: 2.9em; }

/* 设施卡：建筑大图占左栏上半 */
.k29-pic.big { flex: 1 1 auto; height: auto; min-height: 70px; padding: 0; }
.k29-pic.big canvas { width: 100%; height: 100%; display: block; image-rendering: pixelated; }
.k29-l { min-height: 0; } .k29-rows { flex: none; }
/* 状态条：缩成胶囊、遮住角色时淡出、管理只留图标 */
#sb29 { top: calc(4px + var(--android-safe-top, 0px)); height: 34px; gap: 4px; }
#sb29.dim { opacity: .35; }
#sb29 .sb29-m > i { width: 16px; height: 16px; background-size: 16px 16px; }
#sb29 .sb29-m { gap: 1px; } #sb29 .k29-pip { width: 8px; height: 10px; background-size: 24px 10px; }
#sb29 .k29-pip.o { background-position: -8px 0; } #sb29 .k29-pip.r { background-position: -16px 0; }
#sb29 > b { font-size: 15px; }
#sb29 .sb29-mg { width: 34px; height: 28px; padding: 0; font-size: 0; border-width: 9px; }
#sb29 .sb29-mg i { width: 18px; height: 18px; }

/* 营造册格子：四种状态同一个轮廓、同一个盒子，只换颜色（以前三种框图的透明边不一样，看着大小不齐） */
.pbox.bk263.bk29 .bk-card2, .bk29-empty { box-sizing: border-box; width: 100%; height: 100% !important; margin: 0 !important; border: 10px solid transparent !important; border-radius: 0 !important; image-rendering: pixelated; background: none !important; box-shadow: none !important; }
.pbox.bk263.bk29 .bk-card2 { padding: 0 !important; border-image: url(../../assets/v29/ui/ui_cell_idle.png) 12 fill stretch !important; }
.pbox.bk263.bk29 .bk-card2.on { border-image-source: url(../../assets/v29/ui/ui_cell_on.png) !important; }
.pbox.bk263.bk29 .bk-card2.locked { border-image-source: url(../../assets/v29/ui/ui_cell_lock.png) !important; }
.bk29-empty { border-image: url(../../assets/v29/ui/ui_cell_empty.png) 12 fill stretch !important; }
.pbox.bk263.bk29 .bk-card2 .stamp { right: -4px !important; top: -4px !important; }

/* ================================================================ L 号册页（名册 / 指南 …） */
#panel .pbox.k29box.L { width: var(--L-w); height: var(--L-h); }
.k29.L { gap: 6px; }
.k29-tabs { flex: none; display: flex; gap: 6px; }
.k29-tab { flex: 1; min-width: 0; height: 30px; font: 14px 'Noto Sans SC', sans-serif; letter-spacing: 2px; color: var(--ink-2); cursor: pointer;
  border: 2px solid var(--paper-edge); border-radius: 10px 10px 4px 4px; background: var(--paper-lo); }
.k29-tab.on { color: var(--ink); font-weight: 700; background: var(--paper-hi); border-color: var(--line); box-shadow: inset 0 -3px 0 var(--ink); }
.k29-bd { flex: 1; min-height: 0; overflow: auto; overscroll-behavior: contain; }
/* 名册 */
.k29-rg { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 46px; gap: 6px 10px; }
.k29-ro { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; grid-template-rows: auto auto; column-gap: 8px; align-items: center; padding: 3px 10px 3px 6px; text-align: left; cursor: pointer;
  border: 2px solid var(--paper-edge); border-radius: 10px; background: var(--paper-hi); color: var(--ink); font-family: 'Noto Sans SC', sans-serif; }
.k29-ro:active { background: var(--paper-lo); }
.k29-ro > i { grid-row: 1 / 3; width: 32px; height: 32px; background: center / contain no-repeat; image-rendering: pixelated; }
.k29-ro > b { font-size: 15px; font-weight: 600; line-height: 1.2; } .k29-ro > span { grid-column: 2; font-size: 12px; color: var(--ink-3); line-height: 1.2; }
.k29-ro > em { grid-column: 3; grid-row: 1 / 3; font-style: normal; font-size: 12px; padding: 2px 8px; border-radius: 9px; background: var(--jade); color: #fbf6e6; }
.k29-ro > em.away { background: var(--cinnabar); }
.k29-emp { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; color: var(--ink-3); }
.k29-emp b { font-size: 18px; color: var(--ink-2); font-family: "猫田楷", serif; font-weight: 400; letter-spacing: 3px; }
/* 指南 */
.k29-gg { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 10px; }
.k29-gi { display: flex; align-items: flex-start; gap: 8px; padding: 8px 10px; border: 2px solid var(--paper-edge); border-radius: 10px; background: var(--paper-hi); font-size: 14px; line-height: 1.55; color: var(--ink); min-height: 56px; box-sizing: border-box; }
.k29-gi > i { flex: none; width: 20px; height: 20px; border-radius: 10px; background: var(--ink-2); color: #fbf6e6; font-style: normal; font-size: 12px; line-height: 20px; text-align: center; margin-top: 2px; }

/* 工作台 / 铁匠台 / 储物等「benchbox」老面板：外框尺寸与 L 号一致 */
.pbox.benchbox:not(.bk263) { width: var(--L-w) !important; height: var(--L-h) !important; max-height: none !important; min-height: 0 !important; box-sizing: border-box; overflow: hidden; }
.pbox.benchbox:not(.bk263) > .pbody { max-height: calc(var(--L-h) - 72px); overflow: auto; }
/* 灶台：两栏、每道菜一张小牌，材料用小牌显示 */
.pbox.ck29 { display: flex; flex-direction: column; gap: 6px; padding: 10px 14px; overflow: hidden; }
.pbox.ck29 .k29-h { flex: none; position: relative; padding-right: 36px; }
.pbox.ck29 .k29-h span { margin-left: auto; color: var(--cinnabar); font-size: 13px; }
.pbox.ck29 .ck-tabs { flex: none; display: flex; gap: 6px; margin: 0; }
.pbox.ck29 .ck-tabs button { flex: 1; min-height: 0; height: 32px; font-size: 15px; letter-spacing: 3px; border: 2px solid var(--paper-edge); border-radius: 10px 10px 4px 4px; background: var(--paper-lo); color: var(--ink-2); }
.pbox.ck29 .ck-tabs button.on { background: var(--cinnabar); color: #fbf6e6; border-color: var(--cinnabar); }
.pbox.ck29 .ck-list { flex: 1; min-height: 0; overflow: auto; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 74px; gap: 8px 10px; align-content: start; }
.pbox.ck29 .ck-r { display: grid; grid-template-columns: 44px minmax(0, 1fr); grid-template-rows: auto auto; column-gap: 8px; row-gap: 2px; align-items: center; min-height: 0; height: 74px; padding: 4px 10px 4px 6px; border: 2px solid var(--paper-edge); border-radius: 10px; background: var(--paper-hi); box-sizing: border-box; }
.pbox.ck29 .ck-r:disabled { opacity: .78; }
.pbox.ck29 .ck-r > .ico, .pbox.ck29 .ck-r > img, .pbox.ck29 .ck-r > i { grid-row: 1 / 3; width: 40px; height: 40px; }
.pbox.ck29 .ck-r > b { font-size: 15px; font-weight: 600; }
.ck29-need { grid-column: 2; display: flex; flex-wrap: wrap; gap: 4px; }
.ck29-need u { text-decoration: none; font-size: 12px; padding: 1px 7px; border-radius: 8px; background: var(--paper-lo); color: var(--ink-2); }
.ck29-need u.no { background: rgba(168,57,43,.12); color: var(--cinnabar); } .ck29-need u s { text-decoration: none; margin-left: 3px; font-weight: 700; }

/* 玩法百科：打开一条详情时收起目录和搜索，给正文让出位置；外框同 L 号 */
#hb193:has(.hbback193) .hbnav193, #hb193:has(.hbback193) .hbsearch193 { display: none; }
.pbox.hbbox193 { width: var(--L-w) !important; height: var(--L-h) !important; max-height: none !important; box-sizing: border-box; }
.hs-box #hs-guide { display: none; }
.pbox.hbbox193 .hbback193 { position: static !important; display: inline-flex; margin: 2px 0 4px !important; width: auto; align-self: flex-start; }
#hb193:has(.hbback193) { padding-top: 0; }


/* ================================================================ 层次：五层深度（样板间） */
/* 1 压暗背景 */
#panel.on:has(.l29, .k29box, .hbbox193) { background: rgba(14,12,8,.55); }
/* 2 面板浮起：硬阴影 + 柔影（用 drop-shadow 跟着圆角走） */
.pbox.l29, .pbox.k29box, .pbox.hbbox193 { box-shadow: none !important; filter: drop-shadow(0 4px 0 rgba(42,32,24,.6)) drop-shadow(0 12px 16px rgba(0,0,0,.45)); }
/* 3 凹槽：格子区、摘要区往下凹 */
.pbox.bk263.bk29 .bk-left { border: 10px solid transparent; border-image: url(../../assets/v29/ui/ui_well.png) 12 fill stretch; padding: 0; box-sizing: border-box; image-rendering: pixelated; min-height: 0; }
.pbox.bk263.bk29 .bk-grid2.g4x2 { padding: 0; gap: 6px; }
/* 4 凸起：格子浮在槽里；5 选中：抬高一点 */
.pbox.bk263.bk29 .bk-card2 { filter: drop-shadow(0 2px 0 rgba(42,32,24,.28)); transition: transform var(--t-fast); }
.pbox.bk263.bk29 .bk-card2.on { transform: translateY(-2px); filter: drop-shadow(0 4px 0 rgba(42,32,24,.4)); z-index: 2; }
.pbox.bk263.bk29 .bk-card2:active { transform: translateY(1px); filter: none; }
.bk29-empty { opacity: .9; }
/* 标签：选中的伸出来、其余沉下去 */
.pbox.bk263.bk29 .bk-tab.on { transform: translateY(-2px); filter: drop-shadow(0 -1px 0 rgba(42,32,24,.35)); z-index: 3; }
.pbox.bk263.bk29 .bk-tab:not(.on) { filter: brightness(.94); }

/* 百科条目：两栏 */
.hb29 { display: grid; grid-template-columns: minmax(0, 1fr) 250px; gap: 12px; align-items: stretch; margin-top: 4px; }
.hb29-pts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 54px; gap: 8px; align-content: start; }
.hb29-pt { display: flex; gap: 8px; align-items: flex-start; padding: 8px 10px; box-sizing: border-box; border: 8px solid transparent; border-image: url(../../assets/v29/ui/ui_chip_raise.png) 12 fill stretch; image-rendering: pixelated; filter: drop-shadow(0 2px 0 rgba(42,32,24,.25)); font-size: 13px; line-height: 1.4; color: var(--ink); padding: 0; overflow: hidden; }
.hb29-pt > i { flex: none; width: 20px; height: 20px; margin-top: 2px; border-radius: 10px; background: var(--ink-2); color: #fbf6e6; font-style: normal; font-size: 12px; line-height: 20px; text-align: center; }
.hb29-sum { border: 10px solid transparent; border-image: url(../../assets/v29/ui/ui_well.png) 12 fill stretch; image-rendering: pixelated; display: flex; flex-direction: column; gap: 6px; box-sizing: border-box; min-height: 200px; }
.hb29-pic { flex: 1 1 auto; min-height: 90px; } .hb29-pic canvas { width: 100%; height: 100%; display: block; image-rendering: pixelated; }
.hb29-sum ul { flex: none; margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 3px; }
.hb29-sum li { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; font-size: 13px; color: var(--ink-2); padding: 2px 6px; border-radius: 6px; background: rgba(251,246,230,.7); }
.hb29-sum li b { font-size: 14px; color: var(--ink); font-weight: 700; }

.hbtitle193 { display: flex; align-items: center; gap: 8px; }
.pbox.hbbox193 .hbtitle193 .hbback193 { margin: 0 0 0 auto !important; align-self: center; position: static !important; font-size: 12px; min-height: 26px; padding: 0 10px; }
.pbox.hbbox193 .hbtitle193 { margin: 0 0 4px; }
.pbox.bk262.bk29 .actions226 button:disabled, .pbox.bk262.bk29 .actions226 button.pri:disabled, .pbox.bk262.bk29 #new226:disabled { color: var(--ink-3) !important; }
.pbox.hbbox193 .hbtitle193 .hbback193 { color: var(--ink) !important; background: var(--paper-lo) !important; border: 2px solid var(--line) !important; border-radius: 10px !important; opacity: 1 !important; box-shadow: 0 2px 0 rgba(42,32,24,.35) !important; text-shadow: none !important; }
.hb29-sum { min-height: 0; max-height: 248px; overflow: hidden; } .hb29-pic { min-height: 60px; } .hb29-sum li { padding: 1px 6px; }

/* 营造册格子：边长由脚本按格子区算出，宽 = 高；这里去掉会把格子拉成长方形的规则 */
.pbox.bk263.bk29 .bk-grid2.g4x2 { grid-template: none; }
.pbox.bk263.bk29 .bk-card2, .bk29-empty { height: auto !important; width: auto !important; aspect-ratio: 1 / 1; min-height: 0 !important; }
.pbox.bk263.bk29 .bk-card2 canvas { height: 46% !important; }
.pbox.bk263.bk29 .bk-left { align-items: stretch; justify-content: center; }
.pbox.bk263.bk29 .bk-card2 small { display: none; }
.pbox.bk263.bk29 .bk-card2 canvas { height: 62% !important; }
.pbox.bk263.bk29 .bk-card2 b { font-size: 14px; }


/* ================================================================ 营造册·右栏：五层版式 */
.pbox.bk263.bk29 .bk-main { margin-top: 8px; }
.pbox.bk263.bk29 .bk-tabs { margin-bottom: 6px; }
.pbox.bk263.bk29 .bk-right { border: 10px solid transparent !important; border-image: url(../../assets/v29/ui/ui_card_raise.png) 12 fill stretch !important; padding: 0 !important; overflow: hidden !important; filter: drop-shadow(0 2px 0 rgba(42,32,24,.3)); image-rendering: pixelated; box-sizing: border-box; }
.d29 { height: 100%; display: flex; flex-direction: column; gap: 5px; min-height: 0; }
.d29-h { flex: none; display: flex; align-items: center; gap: 8px; }
.d29-h .bk-seal { flex: none; width: 34px !important; height: 34px !important; line-height: 34px !important; font-size: 17px !important; background-size: 34px 34px !important; }
.d29-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.d29-t h4 { margin: 0 !important; font-size: 20px !important; letter-spacing: 3px; line-height: 1.1; color: var(--ink); white-space: nowrap; }
.d29-t small { font-size: 11.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.d29-desc { flex: none; margin: 0; font-size: 12.5px; line-height: 1.5; color: var(--ink-2); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.d29-s { flex: none; border-top: 1px solid var(--paper-edge); padding-top: 4px; }
.d29-s h5 { margin: 0 0 3px; font-size: 11px; font-weight: 400; letter-spacing: .16em; color: var(--ink-3); }
.d29-pre { border-top: 0; padding-top: 0; }
.d29-pre .bk29-pre { margin: 0; }
.d29-m .bn-mats { margin: 0 !important; display: grid !important; grid-template-columns: 1fr 1fr; gap: 3px !important; }
.d29-m .bn-mat { height: 24px !important; font-size: 12.5px; }
.d29-m .bn-mat b { font-size: 13.5px; font-weight: 700; }
.d29-f { flex: none; margin-top: auto; display: flex; align-items: center; gap: 8px; padding-top: 5px; border-top: 1px solid var(--paper-edge); }
.d29-st { flex: 1; min-width: 0; font-size: 12.5px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.d29-st.bad { color: var(--cinnabar); } .d29-st.ok { color: var(--jade); }
.d29-f .actions226 { margin: 0 !important; flex: 0 0 auto; }
.d29-f .actions226 button { height: 32px; min-width: 96px; }

/* 格子状态：彩色 = 能建 / 已建；黑白 = 现在建不了 */
.pbox.bk263.bk29 .bk-card2[data-s29="off"] canvas { filter: grayscale(1) contrast(.9) brightness(1.02); }
.pbox.bk263.bk29 .bk-card2[data-s29="off"] b { color: var(--ink-3) !important; }
.pbox.bk263.bk29 .bk-card2 .stamp { display: none !important; }

/* ================================================================ 营造册·右栏：五层版式；格子区与页签之间留空 */
.pbox.bk263.bk29 .bk-main { margin-top: 10px; }
.pbox.bk263.bk29 .bk-right { border: 10px solid transparent !important; border-image: url(../../assets/v29/ui/ui_card_raise.png) 12 fill stretch !important; padding: 0 !important; overflow: hidden !important; filter: drop-shadow(0 2px 0 rgba(42,32,24,.3)); image-rendering: pixelated; box-sizing: border-box; }
.d29 { height: 100%; display: flex; flex-direction: column; gap: 5px; min-height: 0; }
.d29-h { flex: none; display: flex; align-items: center; gap: 8px; }
.d29-h .bk-seal { flex: none; width: 34px !important; height: 34px !important; line-height: 34px !important; font-size: 17px !important; background-size: 34px 34px !important; }
.d29-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.d29-t h4 { margin: 0 !important; font-size: 20px !important; letter-spacing: 3px; line-height: 1.1; color: var(--ink); white-space: nowrap; }
.d29-t small { font-size: 11.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.d29-chip { display: none !important; }
.d29-desc { flex: none; margin: 0; font-size: 12.5px; line-height: 1.5; color: var(--ink-2); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.d29-s { flex: none; border-top: 1px solid var(--paper-edge); padding-top: 4px; }
.d29-s h5 { margin: 0 0 3px; font-size: 11px; font-weight: 400; letter-spacing: .16em; color: var(--ink-3); }
.d29-pre { border-top: 0; padding-top: 0; } .d29-pre .bk29-pre { margin: 0; }
.d29-m .bn-mats { margin: 0 !important; display: grid !important; grid-template-columns: 1fr 1fr; gap: 3px !important; }
.d29-m .bn-mat { height: 24px !important; font-size: 12.5px; } .d29-m .bn-mat b { font-size: 13.5px; font-weight: 700; }
.d29-f { flex: none; margin-top: auto; display: flex; align-items: center; gap: 8px; padding-top: 5px; border-top: 1px solid var(--paper-edge); }
.d29-st { flex: 1; min-width: 0; font-size: 12.5px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.d29-st.bad { color: var(--cinnabar); } .d29-st.ok { color: var(--jade); }
.d29-f .actions226 { margin: 0 !important; flex: 0 0 auto; } .d29-f .actions226 button { height: 32px; min-width: 96px; }
.d29:has(.d29-pre) .d29-desc { -webkit-line-clamp: 1; }
.d29-m .bn-mat { height: 22px !important; }
/* 低矮屏幕：右栏按高度逐级收紧，底部操作栏永远在；实在放不下时只有「材料」区自己滚 */

/* ================================================================ 设施卡（鸡棚 / 牛栏）：与营造册同一套层次 */
#panel .pbox.k29box:not(.L) .k29-h { height: 38px; }
.k29-h h3 { font-size: 22px; }
/* 左栏：建筑大图在凹槽里；状态读数是一张凸起的卡 */
.k29box:not(.L) .k29-pic.big { border: 10px solid transparent; border-image: url(../../assets/v29/ui/ui_well.png) 12 fill stretch; box-sizing: border-box; image-rendering: pixelated; }
.k29box:not(.L) .k29-rows { border: 9px solid transparent; border-image: url(../../assets/v29/ui/ui_card_raise.png) 12 fill stretch; padding: 0 2px; gap: 3px; image-rendering: pixelated; filter: drop-shadow(0 2px 0 rgba(42,32,24,.28)); box-sizing: border-box; }
.k29box:not(.L) .k29-rows li { height: 19px; font-size: 13px; }
/* 右栏：分组小标题 + 凸起按钮；「现在要做」是一块凹槽，里面的事项是浮起的小牌 */
.k29box:not(.L) .k29-g > small { font-size: 11.5px; letter-spacing: .16em; }
.k29box:not(.L) .k29-todo { border: 10px solid transparent; border-image: url(../../assets/v29/ui/ui_well.png) 12 fill stretch; image-rendering: pixelated; box-sizing: border-box; gap: 3px; flex: 1 1 auto; min-height: 0; overflow: hidden; }
.k29box:not(.L) .k29-todo > small { margin: -3px 0 0; }
.k29box:not(.L) .k29-td { border: 6px solid transparent; border-image: url(../../assets/v29/ui/ui_chip_raise.png) 12 fill stretch; height: 28px; filter: drop-shadow(0 1px 0 rgba(42,32,24,.25)); }
.k29box:not(.L) .k29-td.more, .k29box:not(.L) .k29-td.ok { border: 0; filter: none; }
.k29box:not(.L) .k29-td.ok { height: 30px; }

/* 营造册右栏：不滚动；按钮居中；空间不够时按 c1~c4 逐级收紧，最后整体缩放 */
.d29 { overflow: hidden; }
.d29-t small em { font-style: normal; font-weight: 700; } .d29-t small em.bad { color: var(--cinnabar); } .d29-t small em.ok { color: var(--jade); }
.d29-m { flex: none; overflow: visible; }
.d29-f { justify-content: center; } .d29-f .actions226 { width: 100%; display: flex; justify-content: center; gap: 10px; }
.d29-f .actions226 button { min-width: 120px; }
.d29.c1 .d29-desc { -webkit-line-clamp: 1; }
.d29.c2 .d29-desc { display: none; }
.d29.c3 .d29-s h5 { display: none; } .d29.c3 { gap: 3px; }
.d29.c4 .d29-m .bn-mat { height: 20px !important; font-size: 12px; } .d29.c4 .d29-f .actions226 button { height: 30px; }
.pbox.bk263.bk29 .d29-f .actions226 { justify-content: center !important; margin: 0 auto !important; }

/* 都照料好了：井里放一小幅「安适」场景（立绘），底下一行小字 */
.k29-ok { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; text-align: center; }
.k29-ok .k29-scene { flex: 1 1 auto; min-height: 0; width: 100%; display: block; image-rendering: pixelated; }
.k29-ok p { margin: 0; flex: none; display: flex; align-items: baseline; gap: 8px; max-width: 100%; white-space: nowrap; }
.k29-ok b { font-size: 14px; font-weight: 600; color: var(--jade); }
.k29-ok span { font-size: 12px; color: var(--ink-3); overflow: hidden; text-overflow: ellipsis; }
.k29-ok s { flex: none; width: 30px; height: 30px; border-radius: 50%; background: var(--jade); position: relative; }
.k29-ok s::after { content: ""; position: absolute; left: 10px; top: 6px; width: 8px; height: 14px; border-right: 4px solid #fff; border-bottom: 4px solid #fff; transform: rotate(40deg); }
.k29box:not(.L) .k29-todo:has(.k29-ok) > small { display: none; }

.k29-okt, .k29-okt em, .k29-okt u { white-space: nowrap; }
@media (max-width: 640px) { .k29-okt { gap: 4px; padding: 0 2px; } .k29-okt i { width: 18px; height: 18px; background-size: 18px 18px; } .k29-okt s { display: none; } }
/* 没有「管理」按钮的卡（牛栏）：清单自己撑满，条目放大，不留大片空白 */
.k29box:not(.L) .k29-r.nog .k29-todo { justify-content: center; gap: 8px; }
.k29box:not(.L) .k29-r.nog .k29-td { height: 40px; }
.k29box:not(.L) .k29-r.nog .k29-td b { font-size: 16px; }
.k29box:not(.L) .k29-r.nog .k29-td i { width: 26px; height: 26px; background-size: 26px 26px; }
.k29box:not(.L) .k29-r.nog .k29-td span { font-size: 13px; }
.k29box:not(.L) .k29-r.nog .k29-todo > small { align-self: flex-start; }

/* 设施卡「管理」区：固定 2×2 四个位置，没用到的位置留成虚位，同类建筑排版百分百一致 */
.k29-btn.empty { display: flex; align-items: center; justify-content: center; box-sizing: border-box; border: 2px dashed rgba(122,98,64,.35); border-radius: 12px; color: rgba(122,98,64,.45); font-size: 12px; background: none; cursor: default; pointer-events: none; }

/* 鸡名册：右上是一排排正方形小格（有鸡的上色、空位虚线），选中的那只在左边看大图 */
.k29-cg { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.k29-cell { position: relative; aspect-ratio: 1 / 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 1px; min-width: 0; padding: 0; border: 8px solid transparent; border-image: url(../../assets/v29/ui/ui_cell_idle.png) 12 fill stretch; image-rendering: pixelated; box-sizing: border-box; background: none; cursor: pointer; font: inherit; }
.k29-cell.on { border-image-source: url(../../assets/v29/ui/ui_cell_on.png); }
.k29-cell i { position: absolute; left: 50%; top: 4px; width: 62%; height: 58%; transform: translateX(-50%); background: center / contain no-repeat; image-rendering: pixelated; }
.k29-cell b { position: relative; z-index: 1; margin-bottom: -4px; font-size: 11.5px; font-weight: 600; color: var(--ink); white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.k29-cell.empty { border: 2px dashed rgba(122,98,64,.35); border-radius: 12px; cursor: default; }
.k29-in { width: 7.5em; max-width: 100%; text-align: right; font: inherit; font-weight: 600; color: var(--ink); background: transparent; border: 0; border-bottom: 1px dashed rgba(122,98,64,.5); padding: 0 2px; outline: none; }
.k29-in:focus { border-bottom-style: solid; border-color: var(--jade); }

/* 灶台（设施卡版式）：4 位标签 + 菜单井，固定三行 */
.k29-gr.r4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.k29-gr.r4 .k29-btn { padding: 0 2px; }
.ck29-well { gap: 4px; }
.ck29-well > small { flex: none; }
.ck29-row { flex: 1 1 0; min-height: 0; display: flex; align-items: center; gap: 8px; padding: 0 4px; border: 6px solid transparent; border-image: url(../../assets/v29/ui/ui_chip_raise.png) 12 fill stretch; image-rendering: pixelated; box-sizing: border-box; background: none; font: inherit; cursor: pointer; filter: drop-shadow(0 1px 0 rgba(42,32,24,.25)); max-height: 40px; }
.ck29-row b { font-size: 14px; font-weight: 600; color: var(--ink); white-space: nowrap; }
.ck29-row em { margin-left: auto; display: flex; gap: 6px; font-style: normal; }
.ck29-row em u { text-decoration: none; display: inline-flex; align-items: center; gap: 1px; font-size: 12px; color: var(--ink-2); }
.ck29-row em u.no { color: var(--cinnabar); font-weight: 700; }
.ck29-row em u i { display: inline-block; width: 18px; height: 18px; } .ck29-row em u .ico { --s: 18px; }
.ck29-ic { flex: none; width: 26px; height: 26px; display: block; } .ck29-ic .ico { --s: 26px; }
.k29-gr.r5 { grid-template-columns: repeat(5, minmax(0, 1fr)); } .k29-gr.r5 .k29-btn { padding: 0 1px; font-size: 13px; }
.ck29-row.no { filter: grayscale(1) drop-shadow(0 1px 0 rgba(42,32,24,.25)); opacity: .85; cursor: default; }
.ck29-row.no em u.no { filter: none; }
.ck29-row.empty { border: 2px dashed rgba(122,98,64,.35); border-radius: 12px; filter: none; cursor: default; }
@media (max-width: 640px), (max-height: 350px) {
  .ck29-row { gap: 4px; padding: 0 2px; border-width: 4px; }
  .ck29-row b { font-size: 13px; }
  .ck29-row em { gap: 3px; }
  .ck29-row em u { font-size: 11px; } .ck29-row em u i { width: 14px; height: 14px; } .ck29-row em u .ico { --s: 14px; }
  .ck29-ic, .ck29-ic .ico { width: 22px; height: 22px; --s: 22px; }
  .ck29-well { gap: 3px; }
}
@media (max-height: 350px) { .ck29-well > small { display: none; } .k29-gr.r5 .k29-btn { font-size: 12px; letter-spacing: 0; } }

/* 鸡棚状态条里的「布置」：和「管理」一起排在状态条里，不会再和别的按钮叠在一起 */
  font: 13px 'Noto Sans SC', sans-serif; letter-spacing: 1px; color: var(--ink); background: none; border: 9px solid transparent; border-image: url(../../assets/v29/ui/ui_rb_sec.png) 14 fill stretch; image-rendering: pixelated; }
#hs-furn-quick { display: none !important; }

/* 「管理」是鸡舍/牛栏唯一的入口：册子图标放大、加朱砂底，一眼能看到 */
#sb29 .sb29-mg { height: 32px; padding: 0 4px; font-size: 15px; letter-spacing: 1px; }
#sb29 .sb29-mg i { width: 24px; height: 24px; background-size: 24px 24px; filter: drop-shadow(0 1px 0 rgba(0,0,0,.35)); }
/* 新内核：换回 dvh */
@supports (height: 1dvh) { :root { --L-h: min(366px, calc(100dvh - 20px)); } }
