* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:"Microsoft YaHei","PingFang SC",sans-serif; background:#f4f7f0; color:#333; line-height:1.7; }
a { color:#2e7d32; text-decoration:none; }
a:hover { text-decoration:underline; }
.wrap { max-width:1200px; margin:0 auto; padding:0 16px; }

.topbar { background:linear-gradient(90deg,#1b5e20,#388e3c); color:#fff; padding:10px 0; position:sticky; top:0; z-index:100; box-shadow:0 2px 6px rgba(0,0,0,.15); }
.topbar .wrap { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; }
.logo { color:#fff; font-size:19px; font-weight:bold; }
.nav a { color:#e8f5e9; margin-left:16px; font-size:15px; }
.nav a:hover { color:#fff; }

main.wrap { padding:20px 16px 40px; min-height:70vh; }
.footer { background:#1b5e20; color:#c8e6c9; text-align:center; padding:14px 0; font-size:13px; position:relative; }
.footer .wrap { position:relative; }
.footer-icp { margin-top:4px; font-size:12px; }
.footer-icp a { color:#a5d6a7; text-decoration:none; }
/* 倒数第二行「星期日」的“期”字：外观与普通文字一致，悬停不变色/不加下划线/指针不变 */
.admin-dot { color:inherit; text-decoration:none; cursor:default; outline:none; padding:2px 3px; margin:-2px -3px; -webkit-tap-highlight-color:transparent; }
.admin-dot:hover, .admin-dot:visited { color:inherit; text-decoration:none; }

h1.page-title { font-size:22px; margin-bottom:14px; color:#1b5e20; border-left:5px solid #43a047; padding-left:10px; }
h2.sec-title { font-size:18px; margin:22px 0 10px; color:#2e7d32; }

.grid { display:grid; gap:14px; }
.grid-4 { grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); }
.grid-3 { grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); }
.grid-2 { grid-template-columns:repeat(auto-fit,minmax(380px,1fr)); }

.card { background:#fff; border-radius:10px; padding:16px; box-shadow:0 1px 4px rgba(0,0,0,.08); }
.stat-card { text-align:center; }
.stat-card .num { font-size:30px; font-weight:bold; color:#2e7d32; }
.stat-card .label { color:#666; font-size:14px; }

.alert { padding:10px 16px; border-radius:6px; margin-bottom:14px; }
.alert.ok { background:#e8f5e9; color:#2e7d32; border:1px solid #a5d6a7; }
.alert.err { background:#ffebee; color:#c62828; border:1px solid #ef9a9a; }

table.table { width:100%; border-collapse:collapse; background:#fff; }
.table th, .table td { padding:9px 10px; border-bottom:1px solid #e0e0e0; text-align:left; font-size:14px; }
.table th { background:#f1f8e9; color:#33691e; }
.table tr:hover td { background:#f9fbe7; }

.btn { display:inline-block; padding:7px 16px; border:none; border-radius:6px; background:#43a047; color:#fff; cursor:pointer; font-size:14px; }
.btn:hover { background:#2e7d32; text-decoration:none; }
.btn.sm { padding:3px 10px; font-size:13px; }
.btn.gray { background:#757575; } .btn.red { background:#e53935; } .btn.blue { background:#1e88e5; }

.badge { display:inline-block; padding:2px 9px; border-radius:10px; font-size:12px; background:#e8f5e9; color:#2e7d32; }
.badge.b-planned{background:#eceff1;color:#546e7a;} .badge.b-sowed{background:#e3f2fd;color:#1565c0;}
.badge.b-transplanted{background:#e0f7fa;color:#00838f;} .badge.b-growing{background:#e8f5e9;color:#2e7d32;}
.badge.b-harvesting{background:#fff8e1;color:#f9a825;} .badge.b-done{background:#efebe9;color:#6d4c41;}

form.form .row { margin-bottom:12px; }
form.form label { display:block; font-size:14px; color:#555; margin-bottom:4px; }
form.form input[type=text], form.form input[type=date], form.form input[type=number],
form.form input[type=password], form.form select, form.form textarea {
  width:100%; padding:8px 10px; border:1px solid #cfd8dc; border-radius:6px; font-size:14px; font-family:inherit;
}
form.form textarea { min-height:110px; }

.farm-wrap { background:linear-gradient(#b3e5fc 0%,#e1f5fe 30%,#f4f7f0 30%); border-radius:12px; padding:18px; }
#farmCanvas { width:100%; border-radius:10px; background:transparent; cursor:pointer; display:block; }
.farm-legend { display:flex; gap:14px; flex-wrap:wrap; margin-top:10px; font-size:13px; }
.farm-legend span { display:inline-flex; align-items:center; gap:5px; }
.legend-dot { width:14px; height:14px; border-radius:3px; display:inline-block; }

.tooltip { position:fixed; background:rgba(27,94,32,.95); color:#fff; padding:8px 12px; border-radius:8px; font-size:13px; pointer-events:none; display:none; z-index:999; max-width:280px; }

.kl-card .meta { font-size:12px; color:#888; margin-top:8px; }
.media-badge { font-size:12px; }
.progress { background:#e0e0e0; border-radius:8px; height:10px; overflow:hidden; }
.progress > i { display:block; height:100%; background:linear-gradient(90deg,#66bb6a,#43a047); border-radius:8px; }

.cal-month { border-left:4px solid #43a047; }
.cal-month.cur { border-left-color:#ff9800; background:#fffde7; }
.cal-month .st { color:#ff8f00; font-size:13px; }
.article-body img, .article-body video { max-width:100%; }
.tag { display:inline-block; background:#f1f8e9; color:#558b2f; padding:1px 8px; border-radius:4px; font-size:12px; margin-right:4px; }
@media (max-width:768px){ .nav a{margin-left:8px;font-size:13px;} .grid-2{grid-template-columns:1fr;} }
