:root {
  --bg:#f5f7f6; --card:#fff; --text:#17201c; --muted:#66736d;
  --border:#dfe6e2; --accent:#176b4d; --accent-soft:#e8f3ee;
  --danger:#b42318; --shadow:0 8px 24px rgba(20,40,30,.07);
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,"Microsoft YaHei","PingFang SC",Arial,sans-serif;color:var(--text);background:var(--bg)}
button,select,input{font:inherit}
.topbar{padding:22px 32px;background:#153c2f;color:#fff}
.topbar h1{margin:0 0 6px;font-size:26px}.topbar p{margin:0;color:rgba(255,255,255,.78)}
.page-shell{max-width:1480px;margin:0 auto;padding:22px}.card{background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow)}
.controls{display:flex;align-items:end;gap:14px;padding:16px}.control-group{display:flex;flex-direction:column;gap:6px;min-width:145px}.control-group.grow{flex:1}
.control-group label{font-size:13px;font-weight:700;color:var(--muted)}
select,input{height:42px;padding:0 12px;border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--text);outline:none}
select:focus,input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(23,107,77,.1)}
.secondary-btn{height:42px;padding:0 18px;border:1px solid var(--border);border-radius:10px;background:#fff;cursor:pointer}
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:14px 0}.stat-card{padding:16px 18px}.stat-card span{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}.stat-card strong{font-size:26px}
.main-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(360px,.9fr);gap:14px;align-items:start}.map-column{min-width:0}#map{height:690px;overflow:hidden}
.legend{margin-top:12px;padding:12px 14px;display:flex;flex-wrap:wrap;align-items:center;gap:14px;font-size:13px;color:var(--muted)}.legend-title{font-weight:700;color:var(--text)}.legend-note{margin-left:auto}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px}.dot.low{background:#2f855a}.dot.mid{background:#dd8b16}.dot.high{background:#c0392b}
.side-panel{display:grid;gap:14px}.detail-card,.chart-card,.instructions{padding:18px}.empty-state h2,.detail-heading h2,.chart-heading h2,.instructions h2{margin-top:0}.empty-state p,.detail-heading p,.chart-heading p{color:var(--muted)}
.detail-heading{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-bottom:10px;border-bottom:1px solid var(--border)}.detail-heading h2{margin-bottom:4px}.detail-heading p{margin:0}
.week-badge{padding:5px 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent);white-space:nowrap;font-size:12px;font-weight:700}
.quote-item{padding:14px 0;border-bottom:1px solid var(--border)}.quote-item:last-child{border-bottom:0}.quote-topline{display:flex;justify-content:space-between;gap:16px;align-items:baseline}.quote-type{font-weight:800}.quote-price{font-size:20px;font-weight:800}.quote-change{margin-top:6px;font-size:13px}
.up{
  color:#16803c;
  font-weight:700;
}

.down{
  color:#d32f2f;
  font-weight:700;
}

.flat{
  color:var(--muted);
  font-weight:700;
}.reason{margin:10px 0 0;padding:10px 12px;border-radius:10px;background:#f7f9f8;color:#4c5a54;font-size:13px;line-height:1.65}
.chart-heading{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.chart-heading h2{margin-bottom:4px}.chart-heading p{margin:0}.chart-heading select{max-width:190px}.chart-wrap{height:310px;margin-top:12px}.history-hint{margin:8px 0 0;font-size:12px;line-height:1.5;color:var(--muted)}
.instructions{margin-top:14px}.hidden{display:none}
.city-label-tooltip{background:rgba(255,255,255,.92);border:1px solid rgba(0,0,0,.15);border-radius:6px;box-shadow:none;padding:4px 7px}.city-label-tooltip::before{display:none}.city-map-label{white-space:nowrap;line-height:1.25}.city-cn{font-size:13px;font-weight:700;color:#222}.city-en{margin-left:4px;font-size:11px;color:#666}
.leaflet-popup-content-wrapper{border-radius:12px}.map-popup h3{margin:0 0 4px}.map-popup p{margin:3px 0}
@media(max-width:1050px){.main-grid{grid-template-columns:1fr}#map{height:600px}}
@media(max-width:760px){.page-shell{padding:12px}.topbar{padding:18px}.topbar h1{font-size:21px}.controls{flex-direction:column;align-items:stretch}.control-group{min-width:0}.stats-grid{grid-template-columns:repeat(2,1fr)}#map{height:520px}.legend-note{width:100%;margin-left:0}.chart-heading{flex-direction:column}.chart-heading select{max-width:none;width:100%}}


/* 历史图筛选控件 */
.chart-controls {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.chart-controls select {
  min-width: 120px;
}

@media(max-width:760px) {
  .chart-controls {
    width: 100%;
    justify-content: stretch;
  }

  .chart-controls select {
    flex: 1;
    min-width: 0;
    max-width: none;
  }
}


/* 多城市比较 */
.compare-card {
  padding: 18px;
}

.compare-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}

.compare-heading h2 {
  margin: 0 0 4px;
}

.compare-heading p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.compare-controls {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 14px;
}

.compare-city-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 7px 10px;
  margin-top: 14px;
  max-height: 220px;
  overflow-y: auto;
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fafcfb;
}

.compare-city-option {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  cursor: pointer;
}

.compare-city-option input {
  width: 15px;
  height: 15px;
  margin: 0;
  flex: 0 0 auto;
}

.compare-actions {
  display: flex;
  gap: 8px;
  margin-top: 10px;
}

.compare-chart-wrap {
  height: 330px;
}

@media(max-width:760px) {
  .compare-controls {
    grid-template-columns: 1fr;
  }

  .compare-city-list {
    grid-template-columns: 1fr;
  }

  .compare-actions {
    flex-direction: column;
  }
}

/* ==================================
   历史趋势图时间范围横向按钮
   ================================== */

.range-buttons {
  display: flex;
  gap: 4px;
  align-items: center;
  flex-wrap: wrap;
}

.range-buttons button {
  border: 0;
  background: transparent;
  padding: 6px 9px;
  border-radius: 7px;
  color: #66736d;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}

.range-buttons button:hover {
  background: #eef3f0;
  color: #17201c;
}

.range-buttons button.active {
  background: #176b4d;
  color: #ffffff;
}

/* ==================================
   多城市价格比较 - 全宽布局
   ================================== */

.compare-card {
  margin-top: 16px;
  padding: 22px;
}


/* 标题 */

.compare-heading {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 18px;
}

.compare-heading h2 {
  margin: 0 0 4px;
}

.compare-heading p {
  margin: 0;
  color: #66736d;
  font-size: 13px;
}


/* ==============================
   顶部工具栏
   ============================== */

.compare-toolbar {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;

  padding-bottom: 16px;

  border-bottom: 1px solid #dfe6e2;
}


/* 糖种 */

.compare-filter {
  display: flex;
  flex-direction: column;
  gap: 6px;

  min-width: 220px;
}

.compare-filter label,
.compare-range-label {
  font-size: 13px;
  font-weight: 700;
  color: #66736d;
}


/* 时间范围 */

.compare-range {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 7px;
}


/* ==============================
   城市选择
   ============================== */

.compare-city-list {
  display: grid;

  grid-template-columns:
    repeat(4, minmax(0, 1fr));

  gap: 8px 16px;

  max-height: none;

  margin-top: 16px;

  padding: 14px 16px;

  border: 1px solid #dfe6e2;

  border-radius: 12px;

  background: #fafcfb;
}


.compare-city-option {
  display: flex;
  align-items: center;
  gap: 7px;

  font-size: 13px;

  cursor: pointer;
}


/* 操作按钮 */

.compare-actions {
  display: flex;
  gap: 8px;

  margin-top: 12px;
}


/* ==============================
   比较图
   ============================== */

.compare-chart-area {
  height: 430px;

  margin-top: 18px;
}

@media (max-width: 1050px) {

  .compare-city-list {
    grid-template-columns:
      repeat(3, minmax(0, 1fr));
  }

}


@media (max-width: 760px) {

  .compare-toolbar {
    flex-direction: column;
    align-items: stretch;
  }

  .compare-filter {
    min-width: 0;
  }

  .compare-range {
    align-items: flex-start;
  }

  .compare-city-list {
    grid-template-columns:
      repeat(2, minmax(0, 1fr));
  }

  .compare-chart-area {
    height: 340px;
  }

}


@media (max-width: 480px) {

  .compare-city-list {
    grid-template-columns: 1fr;
  }

}

/* ==================================
   市场概览
   ================================== */

.market-overview {
  padding: 2px 0;
}

.overview-heading {
  margin-bottom: 16px;
}

.overview-heading h2 {
  margin: 0 0 4px;
}

.overview-heading p {
  margin: 0;
  color: #66736d;
  font-size: 13px;
}


/* 主要指标 */

.overview-grid {
  display: grid;
  grid-template-columns:
    repeat(2, minmax(0, 1fr));

  gap: 10px;
}


.overview-item {
  padding: 14px;

  border: 1px solid #dfe6e2;

  border-radius: 12px;

  background: #fafcfb;
}


.overview-item span {
  display: block;

  margin-bottom: 6px;

  color: #66736d;

  font-size: 12px;
}


.overview-item strong {
  display: block;

  font-size: 18px;

  color: #17201c;
}


/* 重点信息 */

.overview-highlight {
  display: flex;

  justify-content: space-between;

  align-items: center;

  gap: 16px;

  padding: 12px 2px;

  border-bottom: 1px solid #dfe6e2;
}


.overview-highlight span {
  color: #66736d;

  font-size: 13px;
}


.overview-highlight strong {
  text-align: right;

  font-size: 13px;

  color: #17201c;
}
/* ==================================
   地图 + 市场概览左右等高
   ================================== */

.main-grid {
  align-items: start;
}


/* 地图列改为纵向布局 */
.map-column {
  display: flex;
  flex-direction: column;
}

/* 地图占主要高度 */
#map {
  flex: 1;
  min-height: 520px;
}

.side-panel {
  display: block;
}

.side-panel .detail-card {
  width: 100%;
  height: auto;
  box-sizing: border-box;
}

.market-overview {
  height: auto;
}

/* ==================================
   纽约 #11 国际基准
   ================================== */

.benchmark-box {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid #dfe6e2;
}

.benchmark-title {
  margin-bottom: 5px;
  font-size: 12px;
  font-weight: 700;
  color: #66736d;
  text-transform: uppercase;
}

.benchmark-name {
  margin-bottom: 14px;
  font-size: 15px;
  font-weight: 800;
  color: #17201c;
}

.benchmark-values {
  display: grid;
  grid-template-columns:
    repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.benchmark-values > div {
  padding: 11px 12px;
  border-radius: 10px;
  background: #f7f9f8;
}

.benchmark-values span {
  display: block;
  margin-bottom: 5px;
  font-size: 11px;
  color: #66736d;
}

.benchmark-values strong {
  font-size: 15px;
  color: #17201c;
}

.benchmark-change {
  display: flex;
  justify-content: space-between;
  margin-top: 11px;
  font-size: 13px;
}

.benchmark-change span {
  color: #66736d;
}

/* ==================================
   周环比颜色统一
   上涨 = 绿色
   下降 = 红色
   ================================== */

.up {
  color: #16803c !important;
  font-weight: 700;
}

.down {
  color: #d32f2f !important;
  font-weight: 700;
}

.flat {
  color: #6b7280 !important;
  font-weight: 600;
}

/* ==================================
   历史图：纽约 #11 开关
   ================================== */

.benchmark-toggle {
  border: 1px solid #dfe6e2;
  background: #ffffff;

  padding: 6px 10px;

  border-radius: 7px;

  color: #66736d;

  font-size: 12px;
  font-weight: 700;

  cursor: pointer;

  transition: all 0.15s ease;
}


.benchmark-toggle:hover {
  background: #f1f5f3;
  color: #17201c;
}


.benchmark-toggle.active {
  background: #176b4d;
  border-color: #176b4d;
  color: #ffffff;
}

/* ==================================
   页面底部版权信息
   ================================== */

.site-footer {
  margin-top: 32px;
  padding: 20px 16px 24px;
  text-align: center;
  font-size: 12px;
  color: #8a9690;
  border-top: 1px solid #e5ebe8;
}