#TbHub { position: fixed; inset: 0; z-index: 9000; display: none; flex-direction: column; overflow: hidden; color: #3d3424; background: #7fb15e url("loading-bg.jpg") center/cover no-repeat; font-family: "Microsoft YaHei", "PingFang SC", sans-serif; user-select: none; }
#TbHub.show { display: flex; }
#TbHub * { box-sizing: border-box; }
button, select, input { font: inherit; }
input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { margin: 0; appearance: none; -webkit-appearance: none; }
input[type="number"] { appearance: textfield; -moz-appearance: textfield; }

.tbh-top { height: 58px; flex: 0 0 58px; display: flex; align-items: center; gap: 12px; padding: 0 16px; background: rgba(255, 250, 232, .97); border-bottom: 1px solid #a88d5e; box-shadow: 0 3px 12px rgba(44, 69, 33, .23); }
.tbh-menu-button, .tbh-refresh { height: 38px; border: 1px solid #a78b5d; border-radius: 10px; color: #4d3d25; background: #fff9e8; cursor: pointer; }
.tbh-menu-button { width: 42px; padding: 0; font-size: 22px; }
.tbh-refresh { padding: 0 13px; }
.tbh-class { display: flex; align-items: baseline; gap: 12px; min-width: 0; margin-right: auto; }
.tbh-class b { max-width: 44vw; overflow: hidden; color: #3d582e; font-size: 20px; text-overflow: ellipsis; white-space: nowrap; }
.tbh-class span { color: #8a7553; font-size: 14px; }
.tbh-refresh-state { display: flex; align-items: center; gap: 7px; color: #638053; font-size: 13px; }
.tbh-refresh-state i { width: 8px; height: 8px; border-radius: 50%; background: #65a753; box-shadow: 0 0 0 3px #dfeeda; }
.tbh-refresh-state.error { color: #b35343; }
.tbh-refresh-state.error i { background: #c55c48; box-shadow: 0 0 0 3px #f3d8d2; }

.tbh-shell { display: grid; grid-template-columns: minmax(0, 1fr) clamp(210px, 15vw, 250px); flex: 1; min-height: 0; background: rgba(70, 115, 51, .18); }
.tbh-content { min-width: 0; min-height: 0; padding: 10px; overflow: hidden; }
.tbh-view { display: none; height: 100%; min-height: 0; padding: 10px; overflow: hidden; border: 1px solid rgba(118, 86, 45, .7); border-radius: 14px; background: rgba(255, 251, 237, .94); box-shadow: 0 5px 18px rgba(32, 58, 25, .25); }
.tbh-view.active { display: flex; flex-direction: column; }
.tbh-view-head { display: flex; align-items: baseline; gap: 12px; min-height: 34px; padding: 0 3px 8px; }
.tbh-view-head h1 { margin: 0; color: #48613a; font-size: 19px; white-space: nowrap; }
.tbh-view-head span { overflow: hidden; color: #887659; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.tbh-farm-view-head { align-items: center; gap: 8px; }
.tbh-farm-view-head > #TbhFarmHint { flex: 1; min-width: 80px; }
.tbh-farm-tools { position: relative; display: flex; align-items: center; gap: 5px; margin-left: auto; }
.tbh-farm-tools button { height: 28px; padding: 0 8px; border: 1px solid #a88f63; border-radius: 7px; color: #58482f; background: #fff9ea; cursor: pointer; font-size: 11px; white-space: nowrap; }
.tbh-farm-tools button:hover { border-color: #5f8b51; background: #eef8e7; }
.tbh-farm-tools button.active, #TbhFarmOpsToggle.active { border-color: #3f763f; color: #fff; background: #4f8b50; box-shadow: 0 0 0 2px rgba(100, 154, 83, .16); }
.tbh-farm-tools button:disabled { opacity: .58; cursor: wait; }
.tbh-farm-ops { position: absolute; top: calc(100% + 7px); right: 0; z-index: 40; width: max-content; max-width: min(760px, calc(100vw - 290px)); display: none; align-items: center; gap: 5px; padding: 8px; border: 1px solid #a98c5b; border-radius: 11px; background: rgba(255, 250, 233, .98); box-shadow: 0 8px 22px rgba(41, 48, 27, .32); }
.tbh-farm-ops.show { display: flex; }
.tbh-farm-ops > button[data-farm-action] { border-color: #8b744d; background: #fffdf4; }
.tbh-farm-ops > button.secondary { color: #786d5b; border-color: #c2b69e; background: #eee9de; }
.tbh-farm-ops > b { min-width: 47px; color: #4f7243; font-size: 11px; text-align: center; white-space: nowrap; }
.tbh-select-modes { display: inline-flex; overflow: visible !important; border: 1px solid #a88f63; border-radius: 7px; }
.tbh-select-modes button { border: 0; border-radius: 0; }
.tbh-select-modes button:first-child { border-radius: 6px 0 0 6px; }
.tbh-select-modes button:last-child { border-left: 1px solid #c2ad87; border-radius: 0 6px 6px 0; }

.tbh-farms { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); grid-template-rows: repeat(6, minmax(0, 1fr)); gap: 6px; flex: 1; min-height: 0; }
.tbh-farm { position: relative; display: grid; grid-template-rows: minmax(0, 1fr) 22px; min-width: 0; min-height: 0; padding: 0; overflow: hidden; border: 1px solid #74552e; border-radius: 8px; background: #6d9f45; cursor: pointer; box-shadow: 0 1px 4px rgba(40, 50, 20, .25); }
.tbh-farm:hover { z-index: 2; outline: 2px solid #fff0a9; transform: scale(1.025); }
.operation-mode .tbh-farm { cursor: crosshair; }
.operation-mode .tbh-farm:hover { outline-color: #f3d35f; }
.tbh-farm.selected { z-index: 1; border-color: #2e713c; outline: 3px solid #74bd66; box-shadow: 0 0 0 2px #ecffd9 inset, 0 3px 10px rgba(36, 86, 42, .42); }
.tbh-farm-check { position: absolute; top: 4px; left: 4px; z-index: 3; width: 22px; height: 22px; display: none; place-items: center; border: 2px solid rgba(255,255,255,.95); border-radius: 50%; color: #fff; background: #4c914e; box-shadow: 0 2px 5px rgba(33,55,27,.35); font-size: 13px; font-weight: 800; }
.operation-mode .tbh-farm-check { display: grid; color: transparent; background: rgba(255,250,230,.84); border-color: #8c774f; }
.operation-mode .tbh-farm.selected .tbh-farm-check { color: #fff; background: #4c914e; border-color: #fff; }
.tbh-farm img { grid-row: 1; width: 100%; height: 100%; min-height: 0; display: block; object-fit: contain; background: #6d9f45; image-rendering: auto; }
.tbh-farm-status { position: absolute; top: 3px; right: 3px; max-width: 70%; padding: 2px 5px; overflow: hidden; border-radius: 7px; color: #544325; background: rgba(255, 249, 220, .91); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.tbh-farm-status.ripe { color: #fff; background: rgba(215, 116, 42, .94); }
.tbh-farm-name { grid-row: 2; display: flex; align-items: center; gap: 3px; min-width: 0; padding: 3px 5px; color: #3c311e; background: rgba(255, 250, 231, .96); font-size: 11px; }
.tbh-farm-name b { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tbh-farm-name small { color: #6b8057; white-space: nowrap; }

.tbh-groups { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: minmax(180px, 1fr); gap: 12px; flex: 1; min-height: 0; overflow: auto; }
.tbh-group { display: grid; grid-template-rows: minmax(0, 1fr) auto; min-width: 0; padding: 0; overflow: hidden; border: 2px solid #92703f; border-radius: 15px; color: #443720; background: #fff4d4; cursor: pointer; box-shadow: 0 4px 12px rgba(60, 69, 25, .18); }
.tbh-group-preview { position: relative; min-height: 120px; overflow: hidden; }
.tbh-group-preview img { width: 100%; height: 100%; display: block; object-fit: contain; background: #6d9f45; image-rendering: auto; }
.tbh-group-preview span { position: absolute; top: 6px; right: 7px; padding: 3px 7px; border-radius: 8px; background: rgba(255, 248, 219, .92); font-size: 11px; }
.tbh-group-info { padding: 10px 12px; text-align: left; }
.tbh-group-info h2 { margin: 0 0 5px; color: #52663f; font-size: 19px; }
.tbh-group-info p { margin: 0 0 5px; color: #6e5733; font-size: 13px; }
.tbh-group-info small { display: block; overflow: hidden; color: #88775a; text-overflow: ellipsis; white-space: nowrap; }

.tbh-people { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 9px; overflow: auto; }
.tbh-person { min-width: 0; min-height: 88px; padding: 11px; border: 1px solid #bda578; border-radius: 12px; color: #443720; background: #fff9e8; text-align: left; cursor: pointer; }
.tbh-person b, .tbh-person span, .tbh-person small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tbh-person span { margin: 7px 0; color: #557b45; }
.tbh-person small { color: #87755a; }
.tbh-level-head { align-items: center; }
.tbh-level-head > span { flex: 1; }
.tbh-level-tools { display: flex; align-items: center; gap: 5px; margin-left: auto; }
.tbh-level-tools button { min-height: 30px; padding: 0 8px; border: 1px solid #ad9367; border-radius: 7px; color: #5c4a2f; background: #fff9e9; cursor: pointer; font-size: 11px; }
.tbh-level-tools button.active, .tbh-level-tools button.primary { color: #fff; border-color: #4b7f46; background: #568e50; }
.tbh-level-tools b { color: #527447; font-size: 11px; white-space: nowrap; }
.tbh-level-person { min-height: 124px; }
.tbh-level-person.selected { color: #354c2d; border-color: #3e7f42; background: #eef9e8; box-shadow: 0 0 0 2px #76b665 inset; }
.tbh-level-title { display: flex !important; align-items: center; gap: 7px; }
.tbh-level-title b { flex: 1; }
.tbh-level-title em { padding: 2px 7px; border-radius: 10px; color: #fff; background: #e79b36; font-size: 12px; font-style: normal; font-weight: 800; }
.tbh-level-progress { position: relative; height: 19px; margin: 9px 0 7px !important; overflow: hidden !important; border-radius: 10px; color: #fff; background: #605843; text-align: center; }
.tbh-level-progress i { position: absolute; inset: 0 auto 0 0; border-radius: inherit; background: linear-gradient(90deg, #65a74f, #9dcc58); }
.tbh-level-progress small { position: relative; z-index: 1; color: #fff; font-size: 10px; line-height: 19px; text-shadow: 0 1px 2px #314329; }
.tbh-level-meta { margin: 0 0 5px !important; color: #567446 !important; font-size: 11px; }
.tbh-ranking { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; overflow: auto; }
.tbh-ranking button { display: grid; grid-template-columns: 38px 1fr auto; align-items: center; gap: 8px; min-width: 0; min-height: 58px; padding: 8px 12px; border: 1px solid #c2ad84; border-radius: 11px; color: #493b25; background: #fffaf0; cursor: pointer; text-align: left; }
.tbh-ranking i { grid-row: 1 / 3; font-size: 20px; font-style: normal; text-align: center; }
.tbh-ranking b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tbh-ranking span { color: #568147; font-weight: 700; }
.tbh-ranking small { color: #89785b; }

.tbh-score { display: flex; flex-direction: column; min-width: 0; min-height: 0; padding: 10px 9px; border-left: 2px solid rgba(125, 91, 47, .65); background: rgba(255, 249, 231, .97); box-shadow: -4px 0 14px rgba(47, 67, 28, .17); transition: box-shadow .2s, background .2s; }
.tbh-score.focus { background: #fff6c9; box-shadow: 0 0 0 5px rgba(255, 216, 92, .7) inset, -6px 0 22px rgba(80, 61, 22, .3); }
.tbh-score-head { display: flex; align-items: center; gap: 5px; }
.tbh-score-head > div { flex: 1; min-width: 0; }
.tbh-score-head b, .tbh-score-head small { display: block; }
.tbh-score-head b { color: #4a623b; font-size: 16px; }
.tbh-score-head small { margin-top: 2px; overflow: hidden; color: #867455; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.tbh-score-head button { padding: 5px 7px; border: 1px solid #aa936a; border-radius: 7px; color: #58472e; background: #fffaf0; cursor: pointer; font-size: 11px; }
.tbh-score-reason { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 5px; margin: 8px 0 6px; color: #7f6d50; font-size: 11px; }
.tbh-score-reason select { width: 100%; min-width: 0; height: 30px; border: 1px solid #bba57c; border-radius: 7px; color: #51432d; background: #fff; font-size: 12px; }
.tbh-score-students { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 38px; gap: 4px; flex: 1; min-height: 0; overflow-y: auto; padding-right: 2px; }
.tbh-score-students button { min-width: 0; padding: 2px 4px; overflow: hidden; border: 1px solid #c6b28a; border-radius: 7px; color: #4d402b; background: #fffdf5; cursor: pointer; }
.tbh-score-students b, .tbh-score-students small { display: block; overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.tbh-score-students small { color: #7a8469; font-size: 9px; }
.tbh-score-students button.selected { border-color: #39743c; color: #fff; background: #579258; box-shadow: 0 0 0 1px #d3e9c5 inset; }
.tbh-score-students button.selected small { color: #edfbe4; }
.tbh-score-actions { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; margin-top: 7px; }
.tbh-score-actions button { min-width: 0; height: 34px; padding: 0; border: 0; border-radius: 7px; color: #fff; background: #4f8d51; cursor: pointer; font-weight: 700; }
.tbh-score-actions button.minus { background: #b45f48; }
.tbh-score-actions button.custom { grid-column: 1 / -1; background: #80669c; }
.tbh-score-actions button:disabled { color: #ddd8cb; background: #aaa69d; cursor: not-allowed; }
.tbh-message { min-height: 28px; padding-top: 5px; overflow: hidden; color: #36713b; font-size: 11px; line-height: 1.25; text-align: center; }
.tbh-message.error { color: #b24f3f; }
.tbh-password-warning { display: none; margin: 4px 0 8px; padding: 8px; border: 1px solid #df9c65; border-radius: 9px; color: #914b28; background: #fff0dc; font-size: 11px; }
.tbh-password-warning.show { display: block; }
.tbh-password-warning b, .tbh-password-warning span { display: block; }
.tbh-password-warning button { width: 100%; margin-top: 6px; padding: 5px; border: 0; border-radius: 6px; color: #fff; background: #b76738; cursor: pointer; font-size: 11px; }

.tbh-drawer-mask { position: fixed; inset: 58px 0 0; z-index: 9160; display: none; background: rgba(22, 35, 20, .45); }
.tbh-drawer-mask.show { display: block; }
.tbh-drawer { position: fixed; top: 0; bottom: 0; left: 0; z-index: 9180; width: min(330px, 88vw); display: flex; flex-direction: column; gap: 5px; padding: 12px; border-right: 1px solid #9e8358; background: #fff9e8; box-shadow: 7px 0 28px rgba(20, 34, 18, .35); transform: translateX(-105%); transition: transform .2s ease; }
.tbh-drawer.open { transform: translateX(0); }
.tbh-drawer-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 5px; padding: 2px 4px 10px; border-bottom: 1px solid #d8c9a8; color: #466037; font-size: 20px; }
.tbh-drawer-head button { width: 36px; height: 36px; border: 0; border-radius: 8px; color: #6e6048; background: #eee5d2; cursor: pointer; font-size: 25px; }
.tbh-drawer > button { min-height: 42px; padding: 8px 12px; border: 1px solid transparent; border-radius: 9px; color: #4b3d27; background: transparent; cursor: pointer; text-align: left; }
.tbh-drawer > button:hover { border-color: #c6ae80; background: #f5eccf; }
.tbh-drawer > button.danger { margin-top: auto; color: #a54c3f; }
.tbh-drawer hr { width: 100%; margin: 3px 0; border: 0; border-top: 1px solid #d8c9a8; }
.tbh-class-select { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 8px; margin-bottom: 4px; padding: 8px 10px; border-radius: 9px; color: #756448; background: #f1ead8; font-size: 12px; }
.tbh-class-select select { width: 100%; min-width: 0; height: 33px; border: 1px solid #bda779; border-radius: 7px; background: #fff; }

#TbHubReturn { position: fixed; top: 15px; left: 15px; z-index: 8800; display: none; width: 46px; height: 42px; padding: 0; border: 2px solid #8d6e3d; border-radius: 11px; color: #46371f; background: rgba(255, 247, 218, .96); box-shadow: 0 4px 14px rgba(0, 0, 0, .25); cursor: pointer; font: 700 23px "Microsoft YaHei", sans-serif; }
#TbHubReturn.show { display: block; }

.tbh-harvest-banner { position: fixed; top: 66px; right: calc(clamp(210px, 15vw, 250px) + 18px); left: 18px; z-index: 9250; display: none; grid-template-columns: 54px minmax(0, 1fr) auto auto; align-items: center; gap: 10px; min-height: 66px; padding: 7px 10px; border: 2px solid #b18a49; border-radius: 16px; color: #49391f; background: rgba(255, 249, 229, .97); box-shadow: 0 8px 25px rgba(42, 53, 27, .34), 0 0 0 3px rgba(255, 244, 201, .65) inset; font-family: "Microsoft YaHei", "PingFang SC", sans-serif; }
.tbh-harvest-banner.show { display: grid; }
.tbh-harvest-banner > img { width: 52px; height: 52px; object-fit: contain; filter: drop-shadow(0 3px 2px rgba(75, 54, 24, .24)); }
.tbh-harvest-banner > div { min-width: 0; }
.tbh-harvest-banner b, .tbh-harvest-banner span { display: block; }
.tbh-harvest-banner b { color: #4a713f; font-size: 17px; }
.tbh-harvest-banner span { margin-top: 3px; overflow: hidden; color: #755f3a; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.tbh-harvest-banner button { min-height: 38px; padding: 0 13px; border: 0; border-radius: 9px; color: #fff; background: #4f8b50; cursor: pointer; font-weight: 700; }
.tbh-harvest-banner button.secondary { background: #9b8054; }
.tbh-harvest-layer { position: fixed; inset: 0; z-index: 9290; overflow: hidden; pointer-events: none; }
.tbh-harvest-marker { position: absolute; top: 2px; left: 50%; z-index: 5; width: 32px; height: 32px; display: grid; place-items: center; border: 2px solid rgba(255, 255, 255, .9); border-radius: 50%; background: var(--hedgehog-color, #e4984e); box-shadow: 0 2px 6px rgba(42, 36, 21, .45); transform: translateX(-50%); animation: tbh-harvest-pulse 1.1s ease-in-out infinite; }
.tbh-harvest-marker img { width: 29px; height: 29px; object-fit: contain; filter: drop-shadow(0 1px 1px rgba(40, 28, 15, .25)); }
.tbh-harvest-runner { position: fixed; z-index: 2; width: 58px; height: 58px; display: grid; place-items: center; border: 3px solid rgba(255, 255, 255, .94); border-radius: 50%; background: var(--hedgehog-color, #e4984e); box-shadow: 0 6px 14px rgba(36, 29, 15, .42); transition: left .75s cubic-bezier(.25,.85,.35,1), top .75s cubic-bezier(.25,.85,.35,1); animation: tbh-harvest-hop .42s ease-in-out infinite alternate; }
.tbh-harvest-runner img { width: 52px; height: 52px; object-fit: contain; }
.tbh-harvest-runner.returning > img { transform: scaleX(-1); }
.tbh-harvest-runner > b { position: absolute; top: 54px; left: 50%; min-width: 72px; padding: 2px 6px; overflow: hidden; border-radius: 7px; color: #4b381e; background: rgba(255, 249, 226, .95); box-shadow: 0 2px 5px rgba(50, 35, 17, .25); font-size: 11px; line-height: 18px; text-align: center; text-overflow: ellipsis; white-space: nowrap; transform: translateX(-50%); }
.tbh-harvest-loot { position: absolute; right: -28px; bottom: -18px; min-width: 84px; padding: 4px 7px; border: 2px solid #d09c44; border-radius: 11px; color: #72441d; background: #fff4bc; box-shadow: 0 3px 8px rgba(45, 31, 13, .3); font-size: 11px; font-weight: 700; white-space: nowrap; }
.tbh-harvest-result { position: fixed; z-index: 4; max-width: 230px; padding: 8px 12px; border: 2px solid #9b7a46; border-radius: 12px; color: #4d3c24; background: rgba(255, 250, 232, .98); box-shadow: 0 6px 18px rgba(38, 31, 19, .35); font: 700 12px/1.45 "Microsoft YaHei", sans-serif; animation: tbh-harvest-pop .25s ease-out; }
.tbh-harvest-result.success { border-color: #5f984d; background: #f0ffe7; }
.tbh-harvest-result.guarded { border-color: #b17c47; background: #fff0d8; }
.tbh-harvest-result.insufficient { border-color: #aa6660; background: #fff0ef; }
@keyframes tbh-harvest-pulse { 0%,100% { transform: translateX(-50%) scale(.92); } 50% { transform: translateX(-50%) scale(1.08); } }
@keyframes tbh-harvest-hop { from { margin-top: 0; } to { margin-top: -7px; } }
@keyframes tbh-harvest-pop { from { opacity: 0; transform: scale(.75); } to { opacity: 1; transform: scale(1); } }

.tbh-modal { position: fixed; inset: 0; z-index: 9300; display: none; align-items: center; justify-content: center; padding: 24px; overflow: auto; background: rgba(27, 43, 26, .64); font-family: "Microsoft YaHei", "PingFang SC", sans-serif; }
.tbh-modal.show { display: flex; }
.tbh-modal, .tbh-modal * { box-sizing: border-box; }
.tbh-dialog { width: min(440px, calc(100vw - 48px)); max-height: calc(100vh - 48px); padding: 24px; overflow: auto; border: 2px solid #a78348; border-radius: 19px; color: #493b26; background: linear-gradient(180deg, #fffdf5 0%, #fff8e8 100%); box-shadow: 0 18px 52px rgba(0, 0, 0, .42), 0 0 0 4px rgba(255, 244, 205, .62) inset; }
.tbh-dialog h3 { margin: 0 0 15px; color: #486039; font-size: 21px; text-align: center; }
.tbh-dialog p { line-height: 1.6; }
.tbh-dialog-note { color: #84745b; font-size: 13px; }
.tbh-dialog input { display: block; width: 100%; min-width: 0; height: 48px; padding: 0 48px 0 13px; border: 1px solid #ad9366; border-radius: 10px; outline: 0; color: #3e3426; background: #fff; box-shadow: 0 2px 6px rgba(100, 77, 37, .08) inset; }
.tbh-dialog input:focus { border-color: #568b4e; box-shadow: 0 0 0 3px rgba(86, 139, 78, .17); }
.tbh-batch-target { margin: 0 0 13px; padding: 11px 13px; border: 1px solid #d8c394; border-radius: 10px; color: #5d4b2f; background: #fffdf4; }
.tbh-batch-target b { color: #39743c; font-size: 18px; }
.tbh-batch-field { display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 8px; margin: 9px 0; color: #6e5b3d; font-size: 13px; }
.tbh-batch-field select, .tbh-batch-field input { width: 100%; min-width: 0; height: 42px; padding: 0 10px; border: 1px solid #ad9366; border-radius: 9px; color: #403526; background: #fff; }
.tbh-batch-field input { padding-right: 10px; }
.tbh-dialog-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }
.tbh-dialog-actions button { min-width: 90px; min-height: 40px; border: 0; border-radius: 9px; color: #fff; cursor: pointer; }
.tbh-dialog-actions .secondary { background: #99825b; }
.tbh-dialog-actions .primary { background: #4f8b50; }
.tbh-password-input { position: relative; display: block; width: 100%; min-width: 0; }
.tbh-password-eye { position: absolute; top: 50%; right: 6px; width: 36px; min-width: 36px; height: 36px; min-height: 36px; padding: 0; border: 0; border-radius: 8px; color: #42633c; background: transparent; cursor: pointer; transform: translateY(-50%); }
.tbh-password-eye:hover { background: #eef4e9; }
.tbh-form-error { min-height: 20px; margin: 7px 2px 0; color: #b34f40; font-size: 12px; line-height: 1.45; }
.tbh-care-summary { margin: 0; padding: 12px 14px; border: 1px solid #d8c293; border-radius: 11px; background: #fffdf6; line-height: 1.65; }
.tbh-empty { grid-column: 1 / -1; align-self: center; padding: 35px; color: #7d6a4c; line-height: 1.8; text-align: center; }

.tbh-lottery { position:fixed; inset:0; z-index:9350; display:none; align-items:center; justify-content:center; padding:20px; background:rgba(22,35,20,.76); }
.tbh-lottery.show { display:flex; }
.tbh-lottery-card,.tbh-lottery-picker-screen { position:relative; width:min(920px,calc(100vw - 28px)); max-height:calc(100vh - 28px); border:3px solid #d4ae59; border-radius:24px; background:#fff9e9; box-shadow:0 24px 70px rgba(0,0,0,.5),0 0 0 5px rgba(255,240,188,.38) inset; }
.tbh-lottery-card { display:none; padding:10px 10px 18px; overflow:auto; }
.tbh-lottery-card.active { display:block; }
.tbh-lottery-close { position:absolute; top:18px; right:18px; z-index:8; width:42px; height:42px; border:2px solid rgba(255,255,255,.9); border-radius:50%; color:#fff; background:rgba(79,57,30,.76); cursor:pointer; font-size:28px; line-height:34px; }
.tbh-lottery-close:hover { background:#7e552c; transform:scale(1.06); }
.tbh-lottery-picker-screen { display:none; width:min(820px,calc(100vw - 48px)); max-height:min(86vh,670px); padding:18px 18px 13px; overflow:hidden; }
.tbh-lottery-picker-screen.active { display:flex; flex-direction:column; }
.tbh-lottery-picker-close { top:15px; right:15px; color:#fff8e8; border-color:#e5c477; background:#76613e; }
.tbh-lottery-picker-head { display:flex; align-items:center; justify-content:center; gap:13px; flex:0 0 auto; padding:0 50px 11px; text-align:center; }
.tbh-lottery-picker-head>span { color:#e5b940; font-size:20px; animation:tbh-spark-twinkle 1.7s ease-in-out infinite; }
.tbh-lottery-picker-head>span:last-child { animation-delay:.7s; }
.tbh-lottery-picker-head h2 { margin:0; color:#4d713e; font-size:26px; }
.tbh-lottery-picker-head p { margin:3px 0 0; color:#806d4f; font-size:12px; }
.tbh-lottery-students { display:grid; grid-template-columns:repeat(9,minmax(0,1fr)); gap:7px; min-height:0; padding:4px 3px 7px; overflow:auto; }
.tbh-lottery-student { position:relative; min-width:0; min-height:78px; padding:6px 3px 5px; overflow:hidden; border:1px solid hsl(var(--student-hue) 38% 65%); border-radius:12px; color:#54462e; background:linear-gradient(145deg,#fffdf4,hsl(var(--student-hue) 58% 94%)); box-shadow:0 2px 6px rgba(82,64,33,.12); cursor:pointer; text-align:center; transition:.18s ease; }
.tbh-lottery-student:hover { z-index:2; border-color:hsl(var(--student-hue) 55% 49%); box-shadow:0 8px 20px rgba(73,85,42,.23); transform:translateY(-3px); }
.tbh-lottery-avatar { position:relative; display:grid; place-items:center; width:32px; height:32px; margin:0 auto 3px; border:2px solid rgba(255,255,255,.88); border-radius:50%; color:#fff; background:linear-gradient(145deg,hsl(var(--student-hue) 55% 64%),hsl(var(--student-hue) 48% 42%)); box-shadow:0 2px 6px rgba(0,0,0,.16); font-size:14px; font-weight:800; }
.tbh-lottery-avatar i { position:absolute; top:-5px; right:-3px; color:#ffe878; filter:drop-shadow(0 0 3px #e0a82c); font-size:11px; font-style:normal; }
.tbh-lottery-student b,.tbh-lottery-student small,.tbh-lottery-student em { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tbh-lottery-student b { font-size:12px; }
.tbh-lottery-student small { margin-top:1px; color:#a56b22; font-size:9px; }
.tbh-lottery-picker-note { flex:0 0 auto; margin:6px 0 0; color:#887554; text-align:center; font-size:10px; }
.tbh-lottery-hero { position:relative; aspect-ratio:16/7.2; overflow:hidden; border-radius:17px; background:#567b42; }
.tbh-lottery-hero>img { width:100%; height:100%; display:block; object-fit:cover; }
.tbh-lottery-magic { position:absolute; top:49%; left:50%; width:220px; height:220px; border-radius:50%; pointer-events:none; transform:translate(-50%,-50%); }
.tbh-magic-halo { position:absolute; inset:35px; border-radius:50%; background:radial-gradient(circle,#fffbd0 0,#fbe76b 19%,rgba(133,238,169,.58) 39%,rgba(130,99,227,.22) 58%,transparent 72%); box-shadow:0 0 28px #fff6a8,0 0 64px rgba(123,240,179,.76),0 0 105px rgba(168,124,255,.55); animation:tbh-magic-breathe 2.1s ease-in-out infinite; }
.tbh-magic-seed { position:absolute; inset:0; display:grid; place-items:center; z-index:3; filter:drop-shadow(0 0 9px #fff9b2) drop-shadow(0 7px 5px rgba(49,69,32,.35)); font-size:48px; animation:tbh-magic-float 2.3s ease-in-out infinite; }
.tbh-magic-ring { position:absolute; inset:28px; border:2px solid rgba(255,247,157,.8); border-radius:50%; box-shadow:0 0 12px rgba(255,246,141,.72) inset,0 0 14px rgba(196,151,255,.62); animation:tbh-ring-spin 7s linear infinite; }
.tbh-magic-ring::before,.tbh-magic-ring::after { position:absolute; width:9px; height:9px; border-radius:50%; content:""; background:#fff9b1; box-shadow:0 0 12px #fff,0 0 22px #abf0d3; }
.tbh-magic-ring::before { top:13px; left:20px; }.tbh-magic-ring::after { right:6px; bottom:42px; }
.tbh-magic-ring.ring-b { inset:49px 16px; border-color:rgba(183,151,255,.7); transform:rotate(62deg); animation-direction:reverse; animation-duration:5.2s; }
.tbh-magic-spark { position:absolute; z-index:4; color:#fff9a9; filter:drop-shadow(0 0 7px #fff) drop-shadow(0 0 13px #8ef1be); font-style:normal; animation:tbh-spark-twinkle 1.7s ease-in-out infinite; }
.spark-1{top:25px;left:43px;font-size:25px}.spark-2{top:41px;right:31px;font-size:19px;animation-delay:.35s}.spark-3{right:19px;bottom:54px;font-size:28px;animation-delay:.75s}.spark-4{bottom:26px;left:55px;font-size:17px;animation-delay:1.1s}.spark-5{top:88px;left:9px;font-size:15px;animation-delay:.55s}.spark-6{bottom:85px;right:3px;font-size:16px;animation-delay:1.3s}
.tbh-magic-wisp { position:absolute; width:53px; height:15px; border-top:3px solid rgba(196,249,213,.82); border-radius:50%; filter:drop-shadow(0 0 7px #bfffd8); animation:tbh-wisp-rise 3.1s ease-in-out infinite; }
.wisp-a{left:17px;bottom:41px;transform:rotate(32deg)}.wisp-b{right:9px;top:76px;transform:rotate(-38deg);animation-delay:1s}.wisp-c{left:73px;top:13px;transform:rotate(8deg);animation-delay:1.9s}
.drawing .tbh-lottery-magic { animation:tbh-magic-stage .8s ease-in-out infinite alternate; }
.drawing .tbh-magic-halo { animation:tbh-magic-surge .6s ease-in-out infinite alternate; }
.drawing .tbh-magic-ring { animation-duration:1.05s; border-width:3px; }
.drawing .tbh-magic-seed { animation:tbh-seed-awaken .75s ease-in-out infinite alternate; }
.drawing .tbh-magic-spark { animation-duration:.45s; }
.tbh-lottery-info { position:relative; min-height:70px; padding:14px 150px 5px; text-align:center; }
.tbh-lottery-heading { min-width:0; }
.tbh-lottery-info h2 { margin:0; color:#4d713e; font-size:26px; }
.tbh-lottery-info p { margin:4px 0 0; color:#826c4b; }
.tbh-lottery-balance { position:absolute; top:16px; right:14px; width:135px; text-align:right; }
.tbh-lottery-balance b,.tbh-lottery-balance span { display:block; }
.tbh-lottery-balance b { color:#a66a22; font-size:20px; }
.tbh-lottery-balance span { margin-top:3px; color:#8a7657; font-size:12px; }
.tbh-lottery-message { min-height:24px; margin:5px 14px 12px; color:#695a42; text-align:center; }
.tbh-lottery-draw { display:block; min-width:250px; min-height:52px; margin:0 auto; border:0; border-radius:14px; color:#fff; background:linear-gradient(#66a454,#477d3f); box-shadow:0 5px 0 #365f31; cursor:pointer; font-size:19px; font-weight:800; }
.tbh-lottery-draw:disabled { opacity:.64; cursor:wait; }
.tbh-lottery-reveal { position:absolute; top:50%; left:50%; z-index:6; min-width:310px; max-width:70%; padding:16px 25px; opacity:0; border:3px solid #f0c85b; border-radius:18px; color:#624217; background:rgba(255,250,221,.97); box-shadow:0 12px 35px rgba(62,40,15,.42),0 0 22px #ffe16d; text-align:center; transform:translate(-50%,-50%) scale(.45); }
.tbh-lottery-reveal.show { opacity:1; transform:translate(-50%,-50%) scale(1); transition:.42s cubic-bezier(.2,1.3,.35,1); }
.tbh-lottery-reveal small,.tbh-lottery-reveal b,.tbh-lottery-reveal span { display:block; }
.tbh-lottery-reveal b { margin:5px 0; font-size:29px; }
.tbh-lottery-reveal span { color:#4e8745; font-weight:700; }
.tbh-lottery-reveal.rarity-2 { border-color:#7bb5d7; box-shadow:0 12px 35px rgba(32,67,90,.42),0 0 24px #9edcff; }
.tbh-lottery-reveal.rarity-3 { border-color:#b783de; box-shadow:0 12px 35px rgba(65,35,92,.46),0 0 28px #d8a7ff; }
@keyframes tbh-magic-breathe { 0%,100%{opacity:.72;transform:scale(.82)} 50%{opacity:1;transform:scale(1.12)} }
@keyframes tbh-magic-float { 0%,100%{transform:translateY(7px) rotate(-4deg) scale(.94)} 50%{transform:translateY(-8px) rotate(5deg) scale(1.08)} }
@keyframes tbh-ring-spin { to{transform:rotate(360deg)} }
@keyframes tbh-spark-twinkle { 0%,100%{opacity:.28;transform:scale(.45) rotate(0)} 50%{opacity:1;transform:scale(1.35) rotate(90deg)} }
@keyframes tbh-wisp-rise { 0%,100%{opacity:.15;translate:0 12px} 50%{opacity:1;translate:0 -12px} }
@keyframes tbh-magic-stage { from{transform:translate(-50%,-50%) scale(.88)} to{transform:translate(-50%,-50%) scale(1.18)} }
@keyframes tbh-magic-surge { from{opacity:.8;transform:scale(.72)} to{opacity:1;transform:scale(1.35);box-shadow:0 0 45px #fff6a8,0 0 100px #76efbc,0 0 145px #b885ff} }
@keyframes tbh-seed-awaken { from{transform:translateY(8px) rotate(-12deg) scale(.9)} to{transform:translateY(-14px) rotate(12deg) scale(1.24)} }

@media (max-width: 1050px) {
  .tbh-shell { grid-template-columns: minmax(0, 1fr) 210px; }
  .tbh-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tbh-people { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .tbh-farms { grid-template-columns: repeat(6, minmax(0, 1fr)); grid-template-rows: none; grid-auto-rows: minmax(105px, auto); align-content: start; overflow-y: auto; }
  .tbh-farm { aspect-ratio: 16 / 10.6; }
}
@media (max-width: 760px) {
  .tbh-top { height: 52px; flex-basis: 52px; gap: 7px; padding: 0 8px; }
  .tbh-class b { max-width: 40vw; font-size: 16px; }
  .tbh-class span, .tbh-refresh-state span { display: none; }
  .tbh-refresh { width: 40px; padding: 0; overflow: hidden; font-size: 0; }
  .tbh-refresh::before { content: "↻"; font-size: 20px; }
  .tbh-shell { grid-template-columns: 1fr; grid-template-rows: minmax(0, 1fr) 31%; }
  .tbh-content { padding: 5px; }
  .tbh-view { padding: 6px; border-radius: 10px; }
  .tbh-view-head { min-height: 27px; padding-bottom: 4px; }
  .tbh-view-head h1 { font-size: 15px; }
  .tbh-view-head span { font-size: 10px; }
  .tbh-farm-view-head > #TbhFarmHint { display: none; }
  .tbh-farm-tools { gap: 2px; }
  .tbh-farm-tools button { height: 29px; padding: 0 7px; font-size: 10px; }
  .tbh-farm-ops { position: fixed; top: auto; right: 0; bottom: 0; left: 0; z-index: 9240; width: auto; max-width: none; max-height: calc(36vh - 20px); overflow-y: auto; flex-wrap: wrap; justify-content: center; padding: 12px 9px calc(12px + env(safe-area-inset-bottom)); border-radius: 15px 15px 0 0; border-bottom: 0; box-shadow: 0 -8px 22px rgba(41, 48, 27, .32); }
  .tbh-farm-ops > button[data-farm-action] { max-width: none; font-size: 10px; }
  .tbh-farm-ops > b { min-width: 48px; font-size: 10px; }
  .tbh-farms { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: none; grid-auto-rows: auto; gap: 4px; align-content: start; overflow-y: auto; }
  .tbh-farm { aspect-ratio: 16 / 11.2; grid-template-rows: minmax(0, 1fr) 24px; }
  .tbh-farm-name { min-height: 24px; padding: 2px 4px; font-size: 10px; }
  .tbh-farm-status { padding: 1px 3px; font-size: 8px; }
  .tbh-score { padding: 6px; border-top: 2px solid #92713f; border-left: 0; }
  .tbh-score-head, .tbh-score-reason { display: none; }
  .tbh-score-students { grid-template-columns: repeat(6, minmax(0, 1fr)); grid-auto-rows: 31px; }
  .tbh-score-actions { grid-template-columns: repeat(5, 1fr); margin-top: 4px; }
  .tbh-score-actions button.custom { grid-column: auto; }
  .tbh-score-actions button { height: 30px; }
  .tbh-message { min-height: 20px; padding: 2px; }
  .tbh-password-warning { position: absolute; right: 8px; bottom: 8px; left: 8px; z-index: 3; }
  .tbh-drawer-mask { inset: 52px 0 0; }
  .tbh-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; }
  .tbh-group-info { padding: 5px 7px; }
  .tbh-group-info h2 { font-size: 14px; }
  .tbh-group-info p { font-size: 10px; }
  .tbh-people { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; }
  .tbh-level-head > span { display: none; }
  .tbh-level-tools { gap: 3px; overflow-x: auto; }
  .tbh-level-tools button { min-height: 27px; padding: 0 5px; font-size: 9px; }
  .tbh-level-tools b { font-size: 9px; }
  .tbh-view[data-view="people"] .tbh-people { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tbh-ranking { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tbh-modal { padding: 12px; }
  .tbh-dialog { width: min(440px, calc(100vw - 24px)); max-height: calc(100vh - 24px); padding: 18px; }
  .tbh-dialog-actions button { flex: 1; min-width: 0; }
  .tbh-harvest-banner { top: 58px; right: 8px; left: 8px; grid-template-columns: 44px minmax(0, 1fr) auto; gap: 6px; min-height: 58px; padding: 5px 7px; }
  .tbh-harvest-banner > img { width: 42px; height: 42px; }
  .tbh-harvest-banner b { font-size: 14px; }
  .tbh-harvest-banner span { font-size: 10px; }
  .tbh-harvest-banner button { min-height: 34px; padding: 0 8px; font-size: 11px; }
  .tbh-harvest-marker { width: 25px; height: 25px; }
  .tbh-harvest-marker img { width: 22px; height: 22px; }
  .tbh-lottery { padding:7px; }
  .tbh-lottery-card,.tbh-lottery-picker-screen { width:100%; max-height:100%; border-radius:17px; }
  .tbh-lottery-card { padding:7px 7px 14px; }
  .tbh-lottery-picker-screen { padding:17px 10px 10px; }
  .tbh-lottery-picker-head { gap:8px; padding:0 38px 10px; }
  .tbh-lottery-picker-head h2 { font-size:22px; }
  .tbh-lottery-picker-head p { font-size:11px; }
  .tbh-lottery-students { grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }
  .tbh-lottery-student { min-height:84px; padding:7px 3px 5px; }
  .tbh-lottery-avatar { width:36px; height:36px; font-size:16px; }
  .tbh-lottery-student em { display:none; }
  .tbh-lottery-hero { aspect-ratio:16/10; }
  .tbh-lottery-magic { width:176px; height:176px; }
  .tbh-lottery-info { min-height:82px; padding:10px 8px 3px; }
  .tbh-lottery-info h2 { font-size:20px; }
  .tbh-lottery-info p,.tbh-lottery-balance span { font-size:10px; }
  .tbh-lottery-balance { position:static; width:auto; margin-top:5px; text-align:center; }
  .tbh-lottery-balance b,.tbh-lottery-balance span { display:inline; }
  .tbh-lottery-balance b { margin-right:10px; font-size:15px; }
  .tbh-lottery-reveal { min-width:240px; padding:12px 16px; }
  .tbh-lottery-reveal b { font-size:23px; }
  .tbh-lottery-draw { min-width:220px; min-height:46px; font-size:16px; }
}
@media (max-width: 900px) and (orientation: landscape) {
  .tbh-farms { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* 手机触摸专项：保证姓名可读、主要操作可准确点按。 */
@media (max-width: 760px) {
  #TbHub button, .tbh-modal button, .tbh-lottery button { touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
  .tbh-menu-button, .tbh-refresh { width: 44px; height: 44px; min-width: 44px; }
  .tbh-shell { grid-template-rows: minmax(0, 64%) minmax(0, 36%); }
  .tbh-farm-tools > button { min-width: 64px; height: 40px; font-size: 12px; }
  .tbh-farm-ops:not(.show) { display: none; }
  .tbh-farm-ops.show { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; padding: 16px 10px calc(12px + env(safe-area-inset-bottom)); }
  .tbh-farm-ops.show::before { content: ""; grid-column: 1 / -1; justify-self: center; width: 42px; height: 4px; border-radius: 2px; background: #c2b69e; }
  .tbh-farm-ops .tbh-select-modes { grid-column: span 2; display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
  .tbh-farm-ops button, .tbh-farm-ops > button[data-farm-action] { width: 100%; min-height: 42px; padding: 0 5px; font-size: 11px; }
  .tbh-farm-ops > b { display: grid; place-items: center; min-height: 42px; }
  .tbh-farms { grid-auto-rows: 92px; gap: 6px; padding-right: 2px; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; }
  .tbh-farm { aspect-ratio: auto; grid-template-rows: minmax(0, 1fr) 28px; min-height: 92px; }
  .tbh-farm-name { min-height: 28px; padding: 3px 5px; font-size: 11px; }
  .tbh-farm-name b { text-align: center; }
  .tbh-farm-status { top: 2px; right: 2px; padding: 2px 4px; font-size: 9px; }
  .tbh-score { padding: 7px 7px calc(7px + env(safe-area-inset-bottom)); }
  .tbh-score-students { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 40px; gap: 5px; -webkit-overflow-scrolling: touch; }
  .tbh-score-students button { min-height: 40px; }
  .tbh-score-actions { gap: 6px; }
  .tbh-score-actions button { height: 44px; font-size: 16px; }
  .tbh-message { min-height: 24px; font-size: 10px; }
  .tbh-groups { grid-auto-rows: minmax(150px, auto); overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .tbh-group { min-height: 150px; }
  .tbh-level-head { display: grid; grid-template-columns: 1fr; align-items: stretch; gap: 5px; }
  .tbh-level-tools { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; overflow: visible; }
  .tbh-level-tools button, .tbh-level-tools b { min-height: 40px; padding: 0 5px; font-size: 10px; }
  .tbh-level-tools b { display: grid; place-items: center; }
  .tbh-view[data-view="people"] .tbh-people { gap: 7px; -webkit-overflow-scrolling: touch; }
  .tbh-level-person { min-height: 132px; padding: 10px; }
  .tbh-ranking button { min-height: 64px; padding: 7px; }
  .tbh-dialog input, .tbh-dialog select { min-height: 44px; font-size: 16px; }
  .tbh-dialog-actions button { min-height: 44px; }
  .tbh-harvest-banner { grid-template-columns: 40px minmax(0, 1fr) auto; }
  .tbh-harvest-banner button { min-width: 82px; min-height: 42px; }
  .tbh-harvest-runner { width: 44px; height: 44px; border-width: 2px; }
  .tbh-harvest-runner img { width: 40px; height: 40px; }
  .tbh-harvest-runner > b { top: 42px; min-width: 58px; max-width: 76px; padding: 1px 4px; font-size: 9px; line-height: 15px; }
  .tbh-harvest-loot { right: -20px; bottom: -17px; min-width: 66px; padding: 2px 4px; font-size: 9px; }
  .tbh-harvest-result { max-width: 160px; padding: 5px 7px; font-size: 10px; }
  .tbh-lottery-close { width: 44px; height: 44px; }
  .tbh-lottery-student { min-height: 88px; }
  .tbh-lottery-draw { min-height: 48px; }
  .tbh-drawer > button { min-height: 46px; }
}

@media (max-width: 900px) and (orientation: landscape) {
  .tbh-shell { display: block; }
  .tbh-content { height: 100%; padding-right: calc(min(280px, 34vw) + 12px); }
  .tbh-score { position: fixed; top: 58px; right: 6px; bottom: 6px; z-index: 9220; width: min(280px, 34vw); border: 1px solid #92713f; border-radius: 12px; }
  .tbh-farm-ops { right: calc(min(280px, 34vw) + 12px); bottom: 8px; }
  .tbh-farms { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 104px; }
  .tbh-farm { min-height: 104px; }
}

/* v96：批量种子商店可视化网格 + 逐学生结果明细 */
.tbh-seed-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; max-height: 46vh; overflow-y: auto; padding: 4px 2px; }
.tbh-seed-card { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 4px 7px; border: 2px solid #e5e0d5; border-radius: 12px; background: #fffdf7; cursor: pointer; transition: border-color .12s, background .12s; }
.tbh-seed-card.selected { border-color: #5d9c59; background: #eef7e9; }
.tbh-seed-card img { width: 44px; height: 56px; object-fit: contain; image-rendering: auto; }
.tbh-seed-emoji { font-size: 34px; line-height: 56px; }
.tbh-seed-card b { font-size: 13px; color: #4a3a26; }
.tbh-seed-price { font-size: 12px; font-weight: 700; color: #c1702f; }
.tbh-seed-meta { font-size: 11px; color: #8a7a5f; }
.tbh-batch-result { max-height: 40vh; overflow-y: auto; margin-top: 8px; }
.tbh-batch-row { display: flex; align-items: baseline; gap: 6px; padding: 6px 2px; font-size: 13px; color: #4a3a26; border-bottom: 1px dashed #e5e0d5; }
.tbh-batch-row:last-child { border-bottom: none; }
.tbh-batch-row-text { flex: 1; color: #6b5a41; }

/* v99：班级天气文字——总览"全班农田中央状态"标题旁 + 学生田 ☰ 返回键右侧 */
.tbh-view-head .tbh-weather-text { flex: none; color: #48613a; font-size: 13px; font-weight: 700; white-space: nowrap; }
#TbWeatherGame { position: fixed; top: 15px; left: 69px; z-index: 8800; display: none; height: 42px; padding: 0 14px; border: 2px solid #8d6e3d; border-radius: 11px; color: #46371f; background: rgba(255, 247, 218, .96); box-shadow: 0 4px 14px rgba(0, 0, 0, .25); font: 700 15px/38px "Microsoft YaHei", sans-serif; pointer-events: none; white-space: nowrap; }
#TbWeatherGame.show { display: block; }

/* 加分密码开关使用独立尺寸，避免被弹窗文本输入框的 100% 宽度影响。 */
#TbhModalBody .tbh-password-switch { display: flex; align-items: center; gap: 10px; min-height: 44px; font-weight: 700; cursor: pointer; }
#TbhModalBody .tbh-password-switch input { flex: 0 0 22px; width: 22px; height: 22px; margin: 0; padding: 0; accent-color: #51884b; }
#TbhModalBody .tbh-password-admin { min-height: 44px; padding: 8px 12px; margin-top: 12px; max-width: 100%; white-space: normal; }
#TbhModalBody label .tbh-password-input { margin: 6px 0 12px; }
