/* ==========================================================================
   田园手账风 · 设计令牌
   风格：米白纸底 + 叶绿主色 + 暖棕辅助 + 手绘虚线/硬阴影
   说明：只改视觉属性，不触碰任何功能逻辑（布局/隐藏/动画类样式原样保留）
   ========================================================================== */
:root {
  /* 纸感背景与卡片 */
  --paper: #f5f0e1;            /* 页面米白纸底 */
  --paper-dot: #e8e0cc;        /* 点状纹理 */
  --card: #fffbea;             /* 卡片米白 */
  --card-head: #f8efd4;        /* 面板头部浅黄 */
  --card-hover: #fdf6e3;       /* 行/卡片 hover */
  --ink: #4a3f35;              /* 主文字暖墨色 */
  --ink-soft: #8b7d6b;         /* 次级文字 */
  --ink-faint: #aaa;           /* 弱化文字 */

  /* 叶绿主色 */
  --leaf: #6b7f4e;             /* 主色：叶绿 */
  --leaf-deep: #55653c;        /* 深叶绿 hover */
  --leaf-bg: #e3efd3;          /* 叶绿浅底 */
  --leaf-border: #a9c98a;      /* 叶绿边框 */

  /* 辅助色 */
  --brown: #c9b88f;            /* 暖棕边框 */
  --brown-deep: #b8860b;       /* 深金棕（金币/价格） */
  --gold-bg: #f8efd4;          /* 金色浅底 */
  --gold-border: #d9c06a;      /* 金色边框 */

  /* 语义色（保留现有语义，仅微调色值） */
  --success: #4a7a2e;          /* 成功/生长绿 */
  --success-bg: #e3efd3;
  --warn: #b3541e;             /* 警告/成熟橙 */
  --warn-bg: #f5ddd3;
  --danger: #b42318;           /* 危险红 */
  --danger-bg: #fef3f2;
  --info: #6b7f4e;             /* 信息 */

  /* 手账质感 */
  --radius: 14px;              /* 卡片大圆角 */
  --radius-sm: 10px;           /* 小元素圆角 */
  --shadow-hard: 4px 4px 0 var(--brown);  /* 硬阴影（贴纸感） */
  --shadow-soft: 2px 2px 0 rgba(201, 184, 143, 0.5);
  --dash: 2px dashed var(--brown);        /* 虚线分隔 */
  --line: 2px solid var(--brown);         /* 实线边框 */

  /* 字体 */
  --font-hand: "Comic Sans MS", "KaiTi", "楷体", "STKaiti", "Microsoft YaHei", -apple-system, sans-serif;
  --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

body {
  font-family: var(--font-body);
  background: var(--paper);
  background-image: radial-gradient(circle, var(--paper-dot) 1px, transparent 1px);
  background-size: 22px 22px;
  color: var(--ink);
  line-height: 1.6;
}

header {
  background: linear-gradient(135deg, #6b7f4e, #55653c);
  color: #fff;
  padding: 12px 24px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  border-bottom: 3px solid var(--brown);
}

.header-left {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
}

header h1 {
  font-family: var(--font-hand);
  font-size: 1.3rem;
  font-weight: 600;
  letter-spacing: 1px;
}

/* ===== 主导航标签 ===== */
.tab-nav {
  display: flex;
  gap: 4px;
  background: rgba(255,255,255,0.15);
  border-radius: 10px;
  padding: 3px;
  border: 1px solid rgba(255,255,255,0.25);
}

.tab-btn {
  padding: 6px 16px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: rgba(255,255,255,0.85);
  cursor: pointer;
  font-size: 0.85rem;
  font-weight: 500;
  transition: all 0.2s;
  white-space: nowrap;
}

.tab-btn:hover { color: #fff; background: rgba(255,255,255,0.15); }
.tab-btn.active { background: #fffbea; color: var(--leaf-deep); font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,0.15); }

.header-meta { font-size: 0.85rem; opacity: 0.9; display: flex; align-items: center; gap: 6px; }
.header-meta .divider { opacity: 0.5; }

.refresh-btn {
  padding: 4px 12px;
  border: 1px solid rgba(255,255,255,0.5);
  border-radius: 6px;
  background: rgba(255,255,255,0.15);
  color: #fff;
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s;
  white-space: nowrap;
}
.refresh-btn:hover { background: rgba(255,255,255,0.3); border-color: rgba(255,255,255,0.8); }
.refresh-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.refresh-btn.loading { animation: spin 1s linear infinite; }
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

.status-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.status-dot.online { background: var(--success); box-shadow: 0 0 6px rgba(74,122,46,0.5); }
.status-dot.offline { background: var(--danger); box-shadow: 0 0 6px rgba(180,35,24,0.5); }

/* ===== 标签页切换 ===== */
.tab-content {
  display: none !important;
}
.tab-content.active {
  display: grid !important;
}

.dashboard {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
  gap: 16px;
  padding: 16px;
  max-width: 1400px;
  margin: 0 auto;
}

/* ===== 通用面板 ===== */
.panel {
  background: var(--card);
  border: 2px solid var(--brown);
  border-radius: var(--radius);
  box-shadow: var(--shadow-hard);
  overflow: hidden;
}

/* ===== 吸顶区块导航栏 ===== */
html { scroll-behavior: smooth; }

.section-nav {
  position: sticky;
  top: 0;
  z-index: 100;
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding: 8px 12px;
  background: rgba(255, 251, 234, 0.96);
  border-radius: var(--radius-sm);
  border: 2px solid var(--brown);
  box-shadow: var(--shadow-soft);
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  /* PC 端：横跨 grid 所有列，避免被当作普通网格项纵向拉伸 */
  grid-column: 1 / -1;
  align-self: start;
}
.section-nav::-webkit-scrollbar { display: none; }

.section-nav-btn {
  flex: 0 0 auto;
  padding: 6px 14px;
  border: none;
  border-radius: 16px;
  background: var(--leaf-bg);
  color: var(--leaf-deep);
  font-size: 0.8rem;
  font-weight: 500;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.2s;
  border: 1px solid var(--leaf-border);
}
.section-nav-btn:active { transform: scale(0.96); }
.section-nav-btn.active {
  background: var(--leaf);
  border-color: var(--leaf);
  color: #fff;
}

/* 面板滚动定位偏移，避免被吸顶导航栏遮挡 */
.panel { scroll-margin-top: 56px; }

/* 商店购买面板提升堆叠层级，确保商店搜索下拉框不被下方一键操作面板遮挡 */
.panel-farm-shop {
  position: relative;
  z-index: 2;
}

.panel h2 {
  font-size: 1rem;
  padding: 12px 16px;
  background: var(--card-head);
  border-bottom: 2px dashed var(--brown);
  font-family: var(--font-hand);
  letter-spacing: 1px;
}

.panel-header-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  background: var(--card-head);
  border-bottom: 2px dashed var(--brown);
}

.panel-header-row h2 {
  border-bottom: none;
  flex: 1 1 auto;
}

.panel-header-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 16px;
}

.panel table { width: 100%; border-collapse: collapse; }
.panel th {
  text-align: left;
  padding: 8px 16px;
  font-size: 0.8rem;
  color: var(--ink-soft);
  background: var(--card-head);
  border-bottom: 1px solid var(--brown);
  font-weight: 600;
}
.panel td {
  padding: 8px 16px;
  font-size: 0.9rem;
  border-bottom: 1px dashed var(--brown);
}
.panel tr:hover td { background: var(--card-hover); }
.panel .empty {
  text-align: center;
  color: var(--ink-faint);
  padding: 24px;
  font-size: 0.85rem;
}
.panel .mature { color: var(--warn); font-weight: 600; }
.panel .growing { color: var(--success); }

.seed-cat {
  display: inline-block;
  margin-left: 4px;
  padding: 1px 5px;
  border-radius: 4px;
  background: var(--gold-bg);
  color: var(--brown-deep);
  font-size: 0.7rem;
  font-weight: 600;
}

/* ===== 农场信息统计卡片 ===== */
.farm-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));
  gap: 8px;
  padding: 10px 16px;
}

.stat-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 8px 6px;
  background: var(--leaf-bg);
  border-radius: var(--radius-sm);
  border: 1px solid var(--leaf-border);
}

.stat-icon { font-size: 1.1rem; }
.stat-label { font-size: 0.7rem; color: var(--ink-soft); font-weight: 500; }
.stat-value { font-size: 1rem; font-weight: 700; color: var(--leaf-deep); }

/* ===== 活动列表 + 签到 ===== */
.activity-list {
  padding: 4px 16px 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.activity-row {
  font-size: 0.8rem;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.activity-row a {
  color: var(--leaf-deep);
  font-weight: 600;
  text-decoration: none;
}

.activity-row a:hover { text-decoration: underline; }

.activity-date { font-size: 0.7rem; color: var(--ink-faint); }

.checkin-done { color: var(--success); }
.checkin-todo .checkin-link {
  color: var(--warn);
  font-weight: 700;
  text-decoration: none;
}
.checkin-todo .checkin-link:hover { text-decoration: underline; }

/* ===== 子标签导航（集市、背包） ===== */
.sub-tab-nav {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--brown);
  padding: 0 16px;
  background: var(--card-head);
}

.sub-tab-btn {
  padding: 10px 16px;
  border: none;
  background: transparent;
  cursor: pointer;
  font-size: 0.85rem;
  color: var(--ink-soft);
  font-weight: 500;
  position: relative;
  transition: color 0.2s;
  white-space: nowrap;
}

.sub-tab-btn:hover { color: var(--ink); }
.sub-tab-btn.active {
  color: var(--leaf-deep);
  font-weight: 600;
}
.sub-tab-btn.active::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--leaf);
}

.subtab-content { display: none; }
.subtab-content.active { display: block; }

/* ===== 背包子标签工具栏 ===== */
.subtab-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 10px 16px;
  background: var(--card);
}

.count-line {
  font-size: 0.85rem;
  color: var(--ink-soft);
  font-weight: 500;
}

.search-box {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.search-box input {
  padding: 6px 10px;
  border: 1px solid var(--brown);
  border-radius: var(--radius-sm);
  font-size: 0.85rem;
  width: 150px;
  outline: none;
  background: var(--card);
}

.search-box input:focus {
  border-color: var(--leaf);
  box-shadow: 0 0 0 2px rgba(107,127,78,0.15);
}

.search-msg {
  font-size: 0.8rem;
  min-height: 1em;
}

/* ===== 电商风格排序表头 ===== */
.btn-sort-reset {
  margin-left: auto;
  padding: 5px 12px;
  font-size: 0.8rem;
  border: 1px solid var(--brown);
  border-radius: 14px;
  background: var(--card);
  color: var(--ink-soft);
  cursor: pointer;
  transition: all 0.15s ease;
  white-space: nowrap;
}
.btn-sort-reset:hover {
  border-color: var(--leaf);
  color: var(--leaf-deep);
  background: var(--leaf-bg);
}

table.sortable-table th.sortable {
  cursor: pointer;
  user-select: none;
  position: relative;
  transition: background 0.15s ease, color 0.15s ease;
}
table.sortable-table th.sortable:hover {
  background: var(--leaf-bg);
  color: var(--leaf-deep);
}
table.sortable-table th.sort-active {
  background: var(--leaf-bg);
  color: var(--leaf-deep);
  font-weight: 700;
}
table.sortable-table th.sortable .sort-indicator {
  display: inline-block;
  margin-left: 6px;
  font-size: 0.7rem;
  color: var(--leaf);
  font-weight: 700;
  min-width: 1.6em;
  text-align: center;
}
table.sortable-table th.sortable:not(.sort-active) .sort-indicator {
  color: #bbb;
}
table.sortable-table th.sortable:not(.sort-active):hover .sort-indicator {
  color: var(--leaf);
}
table.sortable-table th.sortable .sort-indicator::before {
  content: "↕";
  color: #ccc;
  font-size: 0.65rem;
  margin-right: 4px;
}
table.sortable-table th.sort-active .sort-indicator::before {
  content: "";
}

/* ===== 可折叠表格 ===== */
.table-wrap {
  position: relative;
  overflow: hidden;
  transition: max-height 0.25s ease;
}

.table-wrap.collapsed {
  max-height: 320px;
}

.table-wrap.expanded {
  max-height: none;
}

.expand-bar {
  display: flex;
  justify-content: center;
  padding: 8px 16px 12px;
  background: var(--card);
}

.btn-expand {
  padding: 6px 16px;
  border: 1px solid var(--brown);
  border-radius: 16px;
  background: var(--card-head);
  color: var(--ink-soft);
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s;
}

.btn-expand:hover {
  background: var(--leaf-bg);
  border-color: var(--leaf);
  color: var(--leaf-deep);
}

/* ===== 坑位状态特殊样式 ===== */
.plot-idle { color: var(--ink-faint); }
.plot-mature { color: var(--warn); font-weight: 600; }
.plot-growing { color: var(--success); }
.plot-warning { color: var(--danger); }

/* ===== 订单状态 ===== */
.order-pending { color: var(--brown-deep); }
.order-completed { color: var(--success); }
.order-cooldown { color: var(--danger); font-weight: 600; }
.order-active { color: var(--success); }
.order-help { color: #9b59b6; }
/* 集市订单需求物品库存不足红色标记 */
.req-short { color: var(--danger); font-weight: bold; }
.order-rate {
  display: inline-block;
  margin-left: 4px;
  padding: 1px 5px;
  border-radius: 4px;
  background: var(--gold-bg);
  color: var(--brown-deep);
  font-size: 0.7rem;
  font-weight: 600;
}

.order-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.btn-order-action {
  padding: 4px 10px;
  border: 1px solid var(--leaf);
  border-radius: 6px;
  background: var(--leaf);
  color: #fff;
  cursor: pointer;
  font-size: 0.8rem;
  transition: background 0.2s;
  white-space: nowrap;
}

.btn-order-action:hover { background: var(--leaf-deep); border-color: var(--leaf-deep); }
.btn-order-action.btn-delete {
  background: var(--card);
  color: var(--danger);
  border-color: var(--danger);
}
.btn-order-action.btn-delete:hover { background: var(--danger-bg); }
.btn-order-action.btn-speedup {
  background: var(--brown-deep);
  border-color: var(--brown-deep);
}
.btn-order-action.btn-speedup:hover { background: #9a6a08; }
.btn-order-action.btn-accept {
  background: #9b59b6;
  border-color: #9b59b6;
}
.btn-order-action.btn-accept:hover { background: #8e44ad; }

.mystery-meta {
  padding: 10px 16px;
  font-size: 0.9rem;
  color: var(--ink-soft);
  background: var(--card-head);
  border-bottom: 1px solid var(--brown);
}

#mystery-times {
  font-weight: 700;
  color: var(--leaf-deep);
}

/* ===== 推荐种植提示条 ===== */
.recommended-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  font-size: 0.85rem;
  color: var(--ink-soft);
  background: var(--gold-bg);
  border-bottom: 2px dashed var(--gold-border);
  line-height: 1.5;
}

.recommended-text { flex: 1; }

.rec-select-all {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  cursor: pointer;
  color: var(--ink-soft);
}

.rec-buy-qty {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--ink-soft);
}

.rec-buy-qty-input {
  width: 56px;
  padding: 2px 4px;
  border: 1px solid var(--gold-border);
  border-radius: 6px;
  font-size: 0.85rem;
  background: var(--card);
}

.btn-recommended-buy {
  flex-shrink: 0;
  padding: 2px 10px;
  border: 1px solid var(--leaf);
  border-radius: 8px;
  background: var(--leaf-bg);
  color: var(--leaf-deep);
  cursor: pointer;
  font-size: 0.85rem;
  transition: all 0.2s;
  line-height: 1;
}

.btn-recommended-buy:hover { background: #d3e5bd; }
.btn-recommended-buy:disabled { opacity: 0.6; cursor: not-allowed; }

.recommended-table .rec-check-col {
  width: 28px;
  text-align: center;
}


.recommended-bar .empty {
  color: var(--ink-soft);
}

.btn-recommended-refresh {
  flex-shrink: 0;
  padding: 2px 6px;
  border: 1px solid var(--gold-border);
  border-radius: 6px;
  background: var(--gold-bg);
  color: var(--brown-deep);
  cursor: pointer;
  font-size: 0.85rem;
  transition: all 0.2s;
  line-height: 1;
}

.recommended-bar .btn-recommended-refresh:hover { background: #f0e3c0; }

.refresh-msg {
  flex-shrink: 0;
  font-size: 0.8rem;
  color: var(--ink-soft);
  margin-right: 4px;
  min-width: 0;
  white-space: nowrap;
}
.refresh-msg.msg-loading { color: var(--brown-deep); }
.refresh-msg.msg-ok { color: var(--success); }
.refresh-msg.msg-err { color: var(--danger); }

@keyframes hourglass-spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
.hourglass-loading {
  display: inline-block;
  animation: hourglass-spin 1.2s linear infinite;
}

/* ===== 推荐种植表格 ===== */
.table-wrap[data-type="recommended-crops"] { background: var(--card); }
.table-wrap[data-type="recommended-crops"].collapsed { max-height: 200px; }
.table-wrap[data-type="ranch-recommended-crops"] { background: var(--card); }
.table-wrap[data-type="ranch-recommended-crops"].collapsed { max-height: 200px; }
.recommended-table { width: 100%; }
.recommended-table th {
  padding: 4px 12px;
  font-size: 0.75rem;
  color: var(--ink-soft);
  background: var(--card-head);
  text-align: left;
  border-bottom: 1px solid var(--brown);
}
.recommended-table td {
  padding: 5px 12px;
  font-size: 0.85rem;
  border-bottom: 1px dashed var(--brown);
}
.recommended-table tr:hover td { background: var(--card-hover); }
.recommended-table tr:last-child td { border-bottom: none; }
.recommended-table .rec-low { color: var(--danger); font-weight: 600; }
.recommended-table .rec-no-seed { color: var(--warn); font-weight: 600; }

/* ===== 牧场窝/栏摘要条 ===== */
.ranch-summary {
  padding: 10px 16px;
  font-size: 0.85rem;
  color: var(--ink-soft);
  background: var(--card-head);
  border-bottom: 1px solid var(--brown);
  line-height: 1.5;
}

/* ===== 面板独立刷新按钮 ===== */
.btn-panel-refresh {
  padding: 4px 8px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  background: var(--card-head);
  color: var(--ink-soft);
  cursor: pointer;
  font-size: 0.85rem;
  transition: all 0.2s;
  line-height: 1;
}

.btn-panel-refresh:hover { background: var(--leaf-bg); border-color: var(--leaf); color: var(--leaf-deep); }

/* ===== 每个栏"回到本栏顶部"悬浮按钮（田园手账风·虚线次按钮） ===== */
.btn-section-back-to-top {
  position: fixed;
  right: 24px;
  bottom: 96px;
  width: 42px;
  height: 42px;
  padding: 0;
  border: 2px dashed var(--brown);
  border-radius: 50%;
  background: var(--card);
  color: var(--leaf);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: var(--shadow-soft);
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity 0.2s, transform 0.2s, visibility 0.2s, background 0.2s, border-color 0.2s, color 0.2s;
  z-index: 999;
}

.btn-section-back-to-top svg { width: 20px; height: 20px; }

.btn-section-back-to-top.show {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.btn-section-back-to-top:hover {
  background: var(--leaf-bg);
  border-color: var(--leaf);
  color: var(--leaf-deep);
  transform: translateY(-2px);
}

.btn-section-back-to-top:active {
  transform: translateY(0) scale(0.94);
}

/* ===== 阳光集市工具栏 ===== */
.market-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 8px 16px;
  background: var(--card-head);
  border-bottom: 1px solid var(--brown);
  font-size: 0.85rem;
  color: var(--ink-soft);
}

.low-stock-label { white-space: nowrap; }

.low-stock-input {
  width: 70px;
  padding: 4px 6px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  font-size: 0.85rem;
  text-align: center;
  background: var(--card);
}

.low-stock-input:focus {
  border-color: var(--leaf);
  outline: none;
}

/* ===== 订单批量操作工具栏 ===== */
.orders-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 10px 16px;
  background: var(--card-head);
  border-bottom: 1px solid var(--brown);
}

.orders-toolbar .select-all {
  font-size: 0.85rem;
  display: flex;
  align-items: center;
  gap: 4px;
  cursor: pointer;
  margin-right: 6px;
}

.order-checkbox { cursor: pointer; }

/* ===== 表格横向滚动 ===== */
.table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.table-wrap table {
  min-width: max-content;
  width: 100%;
}

/* 子标签内的市场表格不需要折叠 */
.panel-market .table-wrap {
  max-height: none;
}

/* ===== 牧场占位面板 ===== */
.placeholder-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px 20px;
  text-align: center;
}

.placeholder-icon { font-size: 4rem; margin-bottom: 16px; opacity: 0.5; }
.placeholder-content p { font-size: 1rem; color: #888; margin-bottom: 8px; }
.placeholder-hint { font-size: 0.85rem !important; color: #aaa !important; }

/* ===== 底部 Cookie 管理 ===== */
footer {
  max-width: 1400px;
  margin: 0 auto 24px;
  padding: 0 16px;
}

footer details {
  background: var(--card);
  border: 2px solid var(--brown);
  border-radius: var(--radius);
  box-shadow: var(--shadow-hard);
  padding: 12px 16px;
}

footer summary {
  cursor: pointer;
  font-weight: 600;
  font-size: 0.95rem;
  user-select: none;
}

.cookie-form {
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.cookie-form label { font-size: 0.85rem; color: var(--ink-soft); }

.cookie-form textarea {
  width: 100%;
  padding: 8px 12px;
  border: 1px solid var(--brown);
  border-radius: var(--radius-sm);
  font-family: monospace;
  font-size: 0.8rem;
  resize: vertical;
  background: var(--card);
}

.cookie-actions { display: flex; gap: 8px; flex-wrap: wrap; }

.cookie-actions button {
  padding: 6px 16px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  background: var(--card);
  cursor: pointer;
  font-size: 0.85rem;
}

.cookie-actions button:hover { background: var(--card-hover); }
#cookie-save { background: var(--leaf); color: #fff; border-color: var(--leaf); }
#cookie-save:hover { background: var(--leaf-deep); }
#cookie-clear { color: var(--danger); border-color: var(--danger); }

#cookie-msg { font-size: 0.8rem; padding: 4px 0; }

.last-updated {
  font-size: 0.8rem;
  color: var(--ink-soft);
}

.btn-sync {
  padding: 6px 14px;
  border: 1px solid var(--leaf);
  border-radius: 6px;
  background: var(--leaf);
  color: #fff;
  cursor: pointer;
  font-size: 0.85rem;
  transition: background 0.2s;
}

.btn-sync:disabled {
  background: #a9c98a;
  border-color: #a9c98a;
  cursor: not-allowed;
}

.btn-sync:hover:not(:disabled) { background: var(--leaf-deep); }

/* ===== 坑位操作工具栏 ===== */
.plots-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 10px 16px;
  background: var(--card-head);
  border-bottom: 1px solid var(--brown);
}

.plots-toolbar .select-all {
  font-size: 0.85rem;
  display: flex;
  align-items: center;
  gap: 4px;
  cursor: pointer;
  margin-right: 6px;
}

.btn-action { padding: 5px 12px; border: 1px solid var(--leaf); border-radius: 6px; background: var(--leaf); color: #fff; cursor: pointer; font-size: 0.8rem; transition: background 0.2s; display: inline-flex; align-items: center; gap: 3px; }

.btn-action:hover { background: var(--leaf-deep); border-color: var(--leaf-deep); }
.btn-icon { font-size: 0.9em; }

.plot-checkbox { cursor: pointer; }

/* ===== 通用弹窗 ===== */
.modal {
  position: fixed;
  inset: 0;
  background: rgba(74, 63, 53, 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
}

.modal.hidden { display: none; }

/* ===== 回到顶部悬浮按钮（田园手账风） ===== */
.back-to-top {
  position: fixed;
  right: 24px;
  bottom: 32px;
  width: 46px;
  height: 46px;
  padding: 0;
  border: 2px solid var(--brown);
  border-radius: 50%;
  background: var(--card);
  color: var(--leaf);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: var(--shadow-hard);
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
  transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s ease, background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
  z-index: 900;
}
.back-to-top svg { width: 22px; height: 22px; }
.back-to-top .btt-leaf {
  position: absolute;
  top: -5px;
  right: -5px;
  width: 17px;
  height: 17px;
  filter: drop-shadow(1px 1px 0 rgba(85, 101, 60, 0.4));
}
.back-to-top.show {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.back-to-top:hover {
  background: var(--leaf-bg);
  color: var(--leaf-deep);
  border-color: var(--leaf);
  box-shadow: 3px 3px 0 var(--brown);
}
.back-to-top:active {
  transform: translateY(0) scale(0.94);
  box-shadow: 1px 1px 0 var(--brown);
}

.modal-content {
  background: var(--card);
  border: 2px solid var(--brown);
  border-radius: var(--radius);
  padding: 20px;
  max-width: 420px;
  width: 90%;
  max-height: 80vh;
  overflow-y: auto;
  box-shadow: var(--shadow-hard), 0 8px 30px rgba(0,0,0,0.2);
}

.modal-content h3 { margin-bottom: 12px; font-size: 1.1rem; font-family: var(--font-hand); }

.modal-content label {
  display: block;
  font-size: 0.85rem;
  color: var(--ink-soft);
  margin-bottom: 6px;
}

.modal-search {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--brown);
  border-radius: var(--radius-sm);
  font-size: 0.9rem;
  margin-bottom: 10px;
  background: var(--card);
}

.modal-select {
  width: 100%;
  padding: 8px;
  border: 1px solid var(--brown);
  border-radius: var(--radius-sm);
  font-size: 0.9rem;
  margin-bottom: 10px;
  background: var(--card);
}

.modal-hint {
  font-size: 0.85rem;
  color: var(--ink-soft);
  margin-top: 8px;
}

.modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 16px;
}

.modal-actions button {
  padding: 6px 16px;
  border-radius: 6px;
  border: 1px solid var(--brown);
  cursor: pointer;
  font-size: 0.85rem;
  background: var(--card);
}

#modal-confirm { background: var(--leaf); color: #fff; border-color: var(--leaf); }
#modal-confirm:hover { background: var(--leaf-deep); }
#modal-cancel { background: var(--card); }
#modal-cancel:hover { background: var(--card-hover); }

/* ===== 商店购买自动补全 ===== */
.autocomplete-wrap {
  position: relative;
  flex: 1;
  z-index: 200;
}

.autocomplete-list {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 1000;
  background: var(--card);
  border: 1px solid var(--brown);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-soft), 0 4px 12px rgba(0,0,0,0.12);
  max-height: 260px;
  overflow-y: auto;
  display: none;
  list-style: none;
  margin: 2px 0 0 0;
  padding: 4px 0;
}

.autocomplete-list.show { display: block; }

.autocomplete-list li {
  padding: 8px 12px;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.85rem;
}

.autocomplete-list li:hover { background: var(--card-hover); }
.autocomplete-list li b { color: var(--brown-deep); font-weight: 700; }
.autocomplete-list .auto-price { color: var(--brown-deep); font-weight: 600; font-size: 0.8rem; }
.autocomplete-list .autocomplete-empty {
  color: var(--ink-faint);
  font-size: 0.8rem;
  justify-content: center;
  cursor: default;
}

/* ===== 日志面板 ===== */
.panel-logs .panel-header-row { position: relative; z-index: 2; }

.logs-subtabs {
  display: flex;
  gap: 4px;
  padding: 10px 16px 0;
  border-bottom: 1px solid var(--brown);
}
.logs-subtab {
  padding: 8px 16px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--ink-soft);
  cursor: pointer;
}
.logs-subtab.active { border-bottom-color: var(--leaf); color: var(--leaf-deep); font-weight: 600; }
.logs-view { display: none; }
.logs-view.active { display: block; }
.runtime-last-success { color: var(--ink-soft); font-size: 0.78rem; }
.runtime-auto-refresh { color: var(--ink-soft); font-size: 0.8rem; white-space: nowrap; }
.runtime-warning { min-height: 20px; padding: 3px 16px; color: #b54708; font-size: 0.78rem; }
.log-error { color: #b42318; }

.log-level, .log-status {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
}
.log-level-debug { background: #f2f4f7; color: #475467; }
.log-level-info { background: #eff8ff; color: #175cd3; }
.log-level-warn { background: #fffaeb; color: #b54708; }
.log-level-error { background: #fef3f2; color: #b42318; }
.log-level-fatal { background: #3b0a0a; color: #fff; }
.log-status-success { background: var(--success-bg); color: var(--success); }
.log-status-failed, .log-status-unknown { background: var(--danger-bg); color: var(--danger); }
.log-status-partial, .log-status-skipped { background: #fffaeb; color: #b54708; }

.logs-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 10px 16px;
  background: var(--card-head);
  border-bottom: 1px solid var(--brown);
}

.logs-filter-select,
.logs-filter-input,
.logs-filter-date {
  padding: 5px 8px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  font-size: 0.8rem;
  background: var(--card);
}

.logs-filter-input { width: 140px; }
.logs-filter-date { width: 160px; }
.logs-filter-label { font-size: 0.8rem; color: var(--ink-soft); }

.logs-table-wrap { overflow-x: auto; }
.logs-table-wrap table { min-width: 800px; width: 100%; }
#logs-body td { max-width: 250px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.log-row-detail {
  display: none;
  background: var(--card-hover);
}
.log-row-detail.show { display: table-row; }
.log-row-detail td {
  padding: 12px 16px;
  font-size: 0.8rem;
  color: var(--ink-soft);
  line-height: 1.6;
}

.log-row-detail pre {
  background: #f0e8d8;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 0.75rem;
  overflow-x: auto;
  max-width: 100%;
  white-space: pre-wrap;
  word-break: break-all;
}

.log-row-clickable { cursor: pointer; }
.log-row-clickable:hover { background: var(--card-hover); }

.logs-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 10px 16px;
  font-size: 0.85rem;
  color: var(--ink-soft);
}

.btn-page {
  padding: 4px 12px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  background: var(--card-head);
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s;
}

.btn-page:hover:not(:disabled) { background: var(--leaf-bg); border-color: var(--leaf); color: var(--leaf-deep); }
.btn-page:disabled { opacity: 0.5; cursor: not-allowed; }

@media (max-width: 768px) {
  .logs-filter-bar { gap: 4px; padding: 6px 10px; }
  .logs-filter-select,
  .logs-filter-input,
  .logs-filter-date { font-size: 0.75rem; padding: 3px 6px; }
  .logs-filter-input { width: 100px; }
  .logs-filter-date { width: 130px; }
  .logs-filter-label { font-size: 0.75rem; }
  .logs-pagination { font-size: 0.75rem; }
  .btn-page { font-size: 0.75rem; padding: 3px 8px; }
  .runtime-component,
  .runtime-duration,
  .runtime-correlation { display: none; }
  .logs-subtabs { padding-left: 10px; }
}

/* ===== 一键操作面板 ===== */
.panel-oneclick .oneclick-section {
  padding: 12px 16px;
}

.oneclick-header {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 0;
  border-bottom: 1px dashed var(--brown);
  margin-bottom: 10px;
}

.btn-shop-refresh {
  margin-left: auto;
  padding: 3px 10px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  background: var(--card-head);
  color: var(--ink-soft);
  cursor: pointer;
  font-size: 0.75rem;
  transition: all 0.2s;
  white-space: nowrap;
}

.btn-shop-refresh:hover { background: var(--leaf-bg); border-color: var(--leaf); color: var(--leaf-deep); }
.btn-shop-refresh:disabled { opacity: 0.6; cursor: not-allowed; }

.oneclick-icon { font-size: 1.2rem; }
.oneclick-title { font-weight: 600; font-size: 0.95rem; color: var(--ink); }

.treasure-remaining {
  margin-left: auto;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--leaf-deep);
  background: var(--leaf-bg);
  border: 1px solid var(--leaf-border);
  padding: 2px 10px;
  border-radius: 12px;
}

.treasure-cache-time {
  font-size: 0.75rem;
  color: var(--ink-faint);
  margin: 0 4px;
  white-space: nowrap;
}

.oneclick-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.oneclick-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

.oneclick-label {
  min-width: 50px;
  font-size: 0.85rem;
  color: var(--ink-soft);
  text-align: right;
}

.oneclick-select {
  flex: 1;
  padding: 6px 8px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  font-size: 0.85rem;
  background: var(--card);
  cursor: pointer;
}

.oneclick-input {
  width: 70px;
  padding: 6px 8px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  font-size: 0.85rem;
  text-align: center;
  background: var(--card);
}

.btn-treasure-dig {
  padding: 6px 16px;
  border: none;
  border-radius: 6px;
  background: var(--leaf);
  color: #fff;
  cursor: pointer;
  font-size: 0.85rem;
  font-weight: 600;
  transition: background 0.2s;
}

.btn-treasure-dig:hover { background: var(--leaf-deep); }
.btn-treasure-dig:disabled { background: #a9c98a; cursor: not-allowed; }

.oneclick-result {
  font-size: 0.8rem;
  color: var(--ink-soft);
  max-height: 120px;
  overflow-y: auto;
  padding: 6px 8px;
  background: var(--card-hover);
  border: 1px dashed var(--brown);
  border-radius: var(--radius-sm);
  line-height: 1.6;
}

/* ===== 每日购买区块 ===== */
.daily-purchase-section {
  padding: 12px 16px;
  border-top: 2px dashed var(--brown);
}

.daily-purchase-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}

.daily-purchase-title {
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--ink);
}

.btn-daily-buy-all {
  margin-left: auto;
  padding: 4px 12px;
  border: none;
  border-radius: 6px;
  background: var(--leaf);
  color: #fff;
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s;
  white-space: nowrap;
}
.btn-daily-buy-all:hover { background: var(--leaf-deep); }
.btn-daily-buy-all:disabled { background: #a9c98a; cursor: not-allowed; }

.btn-daily-refresh {
  padding: 4px 10px;
  background: var(--card-head);
  color: var(--ink-soft);
  border: 1px solid var(--brown);
  border-radius: 6px;
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s;
  white-space: nowrap;
}
.btn-daily-refresh:hover { background: var(--card-hover); }
.btn-daily-refresh:disabled { background: #e0d9c8; cursor: not-allowed; }

.daily-purchase-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.daily-purchase-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  background: var(--card-hover);
  border-radius: var(--radius-sm);
  border: 1px dashed var(--brown);
  transition: all 0.2s;
}

.daily-purchase-item-disabled {
  opacity: 0.45;
  background: #ececec;
  pointer-events: none;
}
.daily-purchase-item-disabled .daily-purchase-name {
  color: var(--ink-faint);
}

.daily-purchase-name {
  flex: 1;
  font-size: 0.9rem;
  color: var(--ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.daily-purchase-num-input {
  width: 56px;
  padding: 3px 6px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  font-size: 0.85rem;
  text-align: center;
  outline: none;
  background: var(--card);
  transition: border-color 0.2s;
}
.daily-purchase-num-input:focus {
  border-color: var(--leaf);
}

.daily-purchase-limit {
  font-size: 0.75rem;
  color: var(--warn);
  font-weight: 500;
  white-space: nowrap;
}

.btn-daily-buy-item {
  padding: 3px 12px;
  border: none;
  border-radius: 6px;
  background: var(--leaf);
  color: #fff;
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s;
  white-space: nowrap;
}
.btn-daily-buy-item:hover { background: var(--leaf-deep); }
.btn-daily-buy-item:disabled { background: #a9c98a; cursor: not-allowed; }

.daily-purchase-empty {
  font-size: 0.85rem;
  color: var(--ink-faint);
  padding: 8px 4px;
}

.daily-purchase-result {
  font-size: 0.8rem;
  color: var(--ink-soft);
  margin-top: 8px;
  padding: 6px 8px;
  background: var(--card-hover);
  border: 1px dashed var(--brown);
  border-radius: var(--radius-sm);
  line-height: 1.6;
  max-height: 120px;
  overflow-y: auto;
  display: none;
}

/* ==================== 任务进度显示（模板） ==================== */

.task-num { font-weight: 600; color: var(--ink); }
.task-ok { color: var(--success); font-weight: 600; }
.task-err { color: var(--danger); font-weight: 600; }
.task-warn { color: var(--brown-deep); font-weight: 600; }
.task-muted { color: var(--ink-faint); }
.task-pending { color: var(--brown-deep); }
.task-final-icon { font-weight: 600; }

.task-line {
  margin: 2px 0;
  padding-left: 6px;
  font-size: 0.85rem;
}
.task-line .task-line-no {
  color: var(--ink-faint);
  margin-right: 4px;
}
.task-icon-ok { color: var(--success); }
.task-icon-err { color: var(--danger); }
.task-icon-warn { color: var(--brown-deep); }

/* ==================== 牧场背包底部统一进度区 ==================== */

.backpack-progress {
  margin-top: 12px;
  padding: 10px 12px;
  border: 2px dashed var(--leaf-border);
  border-radius: var(--radius-sm);
  background: rgba(107, 127, 78, 0.06);
}
.backpack-progress-title {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: 600;
  color: var(--leaf-deep);
  margin-bottom: 8px;
  font-size: 0.95rem;
  font-family: var(--font-hand);
}
.btn-clear-progress {
  padding: 3px 10px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  background: var(--card);
  color: var(--ink-soft);
  font-size: 0.78rem;
  cursor: pointer;
  transition: all 0.2s;
}
.btn-clear-progress:hover { border-color: var(--danger); color: var(--danger); }
.backpack-progress-row {
  margin-bottom: 10px;
  padding: 8px 10px;
  background: var(--card);
  border: 1px solid var(--brown);
  border-radius: var(--radius-sm);
  font-size: 0.9rem;
}
.backpack-progress-row:last-child { margin-bottom: 0; }
.progress-row-head {
  display: flex;
  align-items: center;
  margin-bottom: 4px;
  cursor: pointer;
  user-select: none;
}
.progress-row-toggle {
  flex: 0 0 auto;
  width: 16px;
  margin-right: 2px;
  color: var(--ink-faint);
  font-size: 0.8rem;
}
.progress-row-name { font-weight: 600; flex: 1; min-width: 0; }
.progress-row-status { font-size: 0.85rem; font-weight: 600; }
.progress-row-status.task-ok { color: var(--success); }
.progress-row-status.task-warn { color: var(--brown-deep); }
.progress-row-status.task-err { color: var(--danger); }
.progress-row-detail {
  font-size: 0.85rem;
  line-height: 1.6;
  color: var(--ink-soft);
  word-break: break-all;
}
.progress-row-detail .task-line { font-size: 0.82rem; }

/* ==================== 定时任务面板 ==================== */
.tasks-trigger-bar {
  grid-column: 1 / -1;
  padding: 8px 14px;
  border-radius: var(--radius-sm);
  font-size: 0.85rem;
  font-weight: 600;
  border: 1px solid;
}
.tasks-trigger-bar.success {
  background: var(--leaf-bg);
  border-color: var(--leaf);
  color: var(--leaf-deep);
}
.tasks-trigger-bar.fail {
  background: #fbe9e7;
  border-color: var(--danger);
  color: var(--danger);
}
.tasks-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 14px;
  padding: 14px 16px;
}
.tasks-updated { font-size: 0.8rem; color: var(--ink-soft); }
.task-card {
  background: var(--card);
  border: 2px solid var(--brown);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-soft);
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.task-card-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
}
.task-name-link {
  color: var(--leaf-deep);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
  word-break: break-all;
}
.task-name-link:hover { color: var(--leaf); }
.task-desc {
  font-size: 0.72rem;
  color: var(--ink-faint);
  line-height: 1.45;
  word-break: break-all;
}
.task-cron {
  font-family: monospace;
  font-size: 0.75rem;
  color: var(--ink-soft);
  background: var(--leaf-bg);
  border: 1px solid var(--leaf-border);
  border-radius: 6px;
  padding: 1px 6px;
  white-space: nowrap;
}
.task-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  font-size: 0.82rem;
  color: var(--ink-soft);
}
.task-status {
  display: inline-block;
  font-size: 0.78rem;
  font-weight: 600;
  padding: 1px 8px;
  border-radius: 999px;
  border: 1px solid var(--brown);
  color: var(--ink-soft);
}
.task-status-running { color: var(--leaf-deep); border-color: var(--leaf); background: var(--leaf-bg); }
.task-status-success { color: var(--success); border-color: var(--success); }
.task-status-failed { color: var(--danger); border-color: var(--danger); }
.task-status-partial { color: var(--brown-deep); border-color: var(--brown-deep); }
.task-status-paused { color: var(--ink-faint); border-color: var(--brown); }
.task-time { white-space: nowrap; }
.task-card-foot {
  display: flex;
  align-items: center;
  gap: 8px;
  border-top: 2px dashed var(--dash);
  padding-top: 8px;
}
.btn-trigger {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--leaf-deep);
  background: var(--leaf-bg);
  border: 1px solid var(--leaf-border);
  border-radius: var(--radius-sm);
  padding: 4px 10px;
  cursor: pointer;
}
.btn-trigger:hover:not(:disabled) { background: var(--leaf); color: #fff; }
.btn-trigger:disabled { opacity: 0.6; cursor: not-allowed; }
.task-msg {
  font-size: 0.78rem;
  color: var(--ink-soft);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 220px;
}
.task-trigger-msg { font-size: 0.82rem; font-weight: 600; }
.task-trigger-msg.success { color: var(--success); }
.task-trigger-msg.fail { color: var(--danger); }

/* 启停开关 */
.task-toggle {
  font-size: 0.8rem;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: var(--radius-sm);
  cursor: pointer;
  border: 1px solid;
  white-space: nowrap;
}
.task-toggle.pause {
  color: var(--brown-deep);
  background: var(--card-head);
  border-color: var(--brown);
}
.task-toggle.pause:hover { background: var(--leaf-bg); color: var(--leaf-deep); }
.task-toggle.resume {
  color: #fff;
  background: var(--leaf);
  border-color: var(--leaf);
}
.task-toggle.resume:hover { background: var(--leaf-deep); }

/* 间隔档位 */
.task-interval-label {
  font-size: 0.78rem;
  color: var(--ink-soft);
  display: inline-flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
}
.task-interval {
  font-size: 0.78rem;
  font-family: inherit;
  color: var(--ink);
  background: var(--card);
  border: 1px solid var(--brown);
  border-radius: 6px;
  padding: 2px 4px;
  cursor: pointer;
}
.task-interval:disabled { opacity: 0.5; cursor: not-allowed; }
.task-interval-fixed {
  font-size: 0.78rem;
  color: var(--ink-soft);
  white-space: nowrap;
}

/* 执行记录弹窗 */
.tasks-modal-mask {
  position: fixed;
  inset: 0;
  background: rgba(74, 63, 53, 0.45);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  padding: 16px;
}
.tasks-modal {
  background: var(--card);
  border: 2px solid var(--brown);
  border-radius: var(--radius);
  box-shadow: var(--shadow-hard);
  width: min(680px, 100%);
  max-height: 82vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.tasks-modal-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  background: var(--card-head);
  border-bottom: 2px dashed var(--brown);
  gap: 8px;
}
.tasks-modal-title {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  font-weight: 600;
  color: var(--ink);
}
.tasks-modal-cron {
  font-family: monospace;
  font-size: 0.75rem;
  color: var(--leaf-deep);
  background: var(--leaf-bg);
  border: 1px solid var(--leaf-border);
  border-radius: 6px;
  padding: 1px 6px;
}
.tasks-modal-close {
  border: none;
  background: transparent;
  font-size: 1.4rem;
  line-height: 1;
  color: var(--ink-soft);
  cursor: pointer;
  padding: 0 4px;
}
.tasks-modal-close:hover { color: var(--danger); }
.tasks-modal-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  border-bottom: 2px dashed var(--brown);
}
.tasks-modal-table-wrap {
  overflow-y: auto;
  flex: 1;
}
.tasks-modal-table { width: 100%; border-collapse: collapse; }
.tasks-modal-table th {
  position: sticky;
  top: 0;
  background: var(--card-head);
  color: var(--ink);
  font-size: 0.82rem;
  text-align: left;
  padding: 8px 10px;
  border-bottom: 2px solid var(--brown);
}
.tasks-modal-table td {
  font-size: 0.85rem;
  padding: 8px 10px;
  border-bottom: 1px solid var(--dash);
  color: var(--ink);
  vertical-align: top;
  word-break: break-all;
}
.tasks-modal-table tbody tr:hover { background: var(--leaf-bg); }
.tasks-modal-pagination {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 10px 16px;
  border-top: 2px dashed var(--brown);
  font-size: 0.82rem;
  color: var(--ink-soft);
}

/* ===== 牧场一键操作 ===== */
.ranch-oneclick-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 12px 16px;
}

.ranch-oneclick-group {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  flex-wrap: wrap;
}

.ranch-oneclick-label {
  min-width: 42px;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--ink-soft);
  padding-top: 5px;
}

.ranch-oneclick-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  flex: 1;
}

.btn-ranch-action {
  padding: 5px 12px;
  border: 1px solid var(--leaf);
  border-radius: 6px;
  background: var(--leaf);
  color: #fff;
  cursor: pointer;
  font-size: 0.8rem;
  transition: background 0.2s;
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

.btn-ranch-action:hover { background: var(--leaf-deep); border-color: var(--leaf-deep); }
.btn-ranch-action:disabled { background: #a9c98a; border-color: #a9c98a; cursor: not-allowed; }

.ranch-action-result {
  font-size: 0.8rem;
  color: var(--ink-soft);
  max-height: 120px;
  overflow-y: auto;
  padding: 6px 8px;
  background: var(--card-hover);
  border: 1px dashed var(--brown);
  border-radius: var(--radius-sm);
  line-height: 1.6;
  margin: 0 16px 12px;
}

@media (max-width: 768px) {
  .ranch-oneclick-body { padding: 8px 12px; gap: 10px; }
  .ranch-oneclick-group { gap: 6px; }
  .ranch-oneclick-label { font-size: 0.8rem; padding-top: 3px; }
  .btn-ranch-action { padding: 3px 6px; font-size: 0.7rem; border-radius: 3px; }
  .ranch-action-result { margin: 0 12px 10px; }
}

/* ===== 背包道具使用按钮 ===== */
.item-use-row {
  display: flex;
  align-items: center;
  gap: 4px;
}

.item-use-input {
  width: 50px;
  padding: 3px 5px;
  border: 1px solid var(--brown);
  border-radius: 6px;
  font-size: 0.8rem;
  text-align: center;
  background: var(--card);
}

.btn-item-use {
  padding: 3px 8px;
  border: 1px solid var(--leaf);
  border-radius: 6px;
  background: var(--leaf);
  color: #fff;
  cursor: pointer;
  font-size: 0.75rem;
  transition: background 0.2s;
  white-space: nowrap;
}

.btn-item-use:hover { background: var(--leaf-deep); border-color: var(--leaf-deep); }
.btn-item-use:disabled { background: #a9c98a; border-color: #a9c98a; cursor: not-allowed; }

@media (max-width: 768px) {
  .dashboard { grid-template-columns: 1fr; padding: 8px; }
  header { padding: 12px 16px; }
  header h1 { font-size: 1rem; }
  .header-left { gap: 10px; }
  .tab-btn { padding: 5px 10px; font-size: 0.8rem; }
  .farm-stats { grid-template-columns: repeat(2, 1fr); }

  /* 坑位面板紧凑化 */
  .plots-toolbar { gap: 4px; padding: 6px 10px; }
  .plots-toolbar .select-all { font-size: 0.75rem; }
  .btn-action { padding: 3px 6px; font-size: 0.7rem; border-radius: 3px; }
  .btn-action .btn-icon { display: none; }

  .panel-plots .table-wrap { overflow-x: auto; }
  .panel-plots table { font-size: 0.75rem; }
  .panel-plots th,
  .panel-plots td {
    padding: 4px 5px;
    white-space: nowrap;
  }
  .panel-plots th { font-size: 0.7rem; }
  .panel-plots td:nth-child(2) { text-align: center; }
  .plot-checkbox { width: 16px; height: 16px; }

  /* 订单面板紧凑化 */
  .market-toolbar { padding: 6px 10px; gap: 4px; font-size: 0.75rem; }
  .low-stock-input { width: 55px; padding: 3px 4px; font-size: 0.75rem; }
  .orders-toolbar { gap: 4px; padding: 6px 10px; }
  .orders-toolbar .select-all { font-size: 0.75rem; }

  .panel-market .table-wrap { overflow-x: auto; }
  .panel-market table { font-size: 0.75rem; }
  .panel-market th,
  .panel-market td {
    padding: 5px 6px;
    white-space: nowrap;
  }
  .panel-market th { font-size: 0.7rem; }
  .btn-order-action {
    padding: 2px 6px;
    font-size: 0.7rem;
    border-radius: 3px;
  }
  .mystery-meta {
    padding: 8px 12px;
    font-size: 0.8rem;
  }

  .recommended-bar {
    padding: 6px 10px;
    font-size: 0.75rem;
  }

  /* 牧场面板紧凑化 */
  .ranch-summary {
    padding: 6px 10px;
    font-size: 0.75rem;
  }
  .panel-ranch-pens .table-wrap { overflow-x: auto; }
  .panel-ranch-pens table { font-size: 0.75rem; }
  .panel-ranch-pens th,
  .panel-ranch-pens td {
    padding: 4px 5px;
    white-space: nowrap;
  }
  .panel-ranch-pens th { font-size: 0.7rem; }
}

/* ==================== 点击小叶子飘落动画 ==================== */
.click-leaf {
  position: fixed;
  z-index: 9999;
  pointer-events: none;
  will-change: transform, opacity;
  animation: leaf-fall var(--dur, 1.2s) cubic-bezier(0.25, 0.1, 0.35, 1) forwards;
}

@keyframes leaf-fall {
  0% {
    transform: translate(0, 0) rotate(0deg) scale(1);
    opacity: 0;
  }
  8% {
    transform: translate(calc(var(--drift-x, 0px) * 0.15), var(--rise-y, 0px)) rotate(calc(var(--spin, 180deg) * 0.1)) scale(1);
    opacity: 1;
  }
  45% {
    transform: translate(calc(var(--drift-x, 0px) * 0.55), calc(var(--rise-y, 0px) + var(--fall-y, 60px) * 0.45)) rotate(calc(var(--spin, 180deg) * 0.5)) scale(0.95);
    opacity: 1;
  }
  100% {
    transform: translate(var(--drift-x, 0px), calc(var(--rise-y, 0px) + var(--fall-y, 60px))) rotate(var(--spin, 180deg)) scale(0.7);
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .click-leaf {
    display: none;
  }
}
