/* 陕西样板地图布局(T03) —— 全部限定在 .map-pilot 内,不影响其他页面。
   尺寸契约:≥1360 目录256/右栏360/间距16;1200–1359 目录232/右栏336/间距12(文字不缩小);
   768–1199 一次只开一个面板;<768 全幅地图+底部抽屉。 */
.map-pilot{
  position:fixed;inset:0;z-index:900;
  display:grid;
  grid-template-columns:256px 1fr 360px;gap:16px;
  padding:16px;background:var(--bw-page,#f3f8fe);
  font-size:16px;
}
.map-pilot.mp-left-closed{grid-template-columns:0 1fr 360px}
.map-pilot.mp-right-closed{grid-template-columns:256px 1fr 0}
.map-pilot.mp-left-closed.mp-right-closed{grid-template-columns:0 1fr 0}

.mp-left{grid-column:1;min-width:0}
.mp-right{grid-column:3;min-width:0}
.mp-left,.mp-right{
  background:var(--bw-card,#fff);
  border:1px solid var(--bw-line,#dce8f5);
  border-radius:var(--bw-radius,12px);
  overflow:hidden;
  transition:opacity .22s ease;
}
.mp-map{grid-column:2}
.map-pilot.mp-left-closed .mp-left{display:none}
.map-pilot.mp-right-closed .mp-right{display:none}

/* ── 左目录 ─────────────────────────────────────────── */
.mp-tools{padding:0 12px 10px;display:grid;gap:8px}
.mp-search{
  min-height:44px;padding:8px 14px;
  border:1px solid var(--bw-line,#dce8f5);border-radius:8px;
  background:var(--bw-page,#f3f8fe);color:var(--bw-ink,#0a2348);
  font-size:15px;
}
.mp-search:focus{outline:2px solid var(--bw-blue,#087bff);outline-offset:1px}
.mp-note{padding:10px 14px;font-size:13px;color:var(--bw-ink-3,#66789c)}
#mpLeftList{padding:0 12px 14px}
.mp-prov-row{margin-bottom:6px}
.mp-prov{
  width:100%;min-height:52px;padding:8px 12px;
  display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:center;gap:2px 10px;
  border:1px solid var(--bw-line,#dce8f5);border-radius:10px;
  background:var(--bw-card,#fff);cursor:pointer;text-align:left;
}
.mp-prov:hover{border-color:var(--bw-blue,#087bff)}
.mp-prov.mp-on{border-color:var(--bw-blue,#087bff);background:var(--bw-blue-soft,#e8f2ff)}
.mp-prov.mp-done .mp-prov-name::after{content:' ✓';color:var(--bw-good,#0c8a5f);font-weight:700}
.mp-prov-name{font-size:16px;font-weight:600;color:var(--bw-ink,#0a2348)}
.mp-prov-count{font-size:13px;color:var(--bw-ink-2,#42557a);grid-row:1;grid-column:2}
.mp-prov .bw-progress{grid-column:1/3}
.mp-prov .bw-progress-track{height:5px}
.mp-prov-spots{display:grid;gap:4px;padding:6px 4px 8px}
.mp-spot-link{
  min-height:44px;padding:6px 12px;text-align:left;font-size:14px;
  border:1px dashed var(--bw-line,#dce8f5);border-radius:8px;background:transparent;
  color:var(--bw-ink-2,#42557a);cursor:pointer;
}
.mp-spot-link:hover{border-color:var(--bw-blue,#087bff);color:var(--bw-blue,#087bff)}
.mp-type-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:4px 2px}
.mp-type{
  min-height:64px;padding:10px 12px;display:grid;gap:4px;justify-items:start;
  border:1px solid var(--bw-line,#dce8f5);border-radius:10px;background:var(--bw-card,#fff);
  cursor:pointer;text-align:left;
}
.mp-type b{font-size:15px;color:var(--bw-ink,#0a2348)}
.mp-type span{font-size:13px;color:var(--bw-ink-3,#66789c)}
.mp-type.mp-on{border-color:var(--bw-blue,#087bff);background:var(--bw-blue-soft,#e8f2ff)}
.mp-chapter-list{display:grid;gap:6px;padding:4px 2px}
.mp-ch-group{padding:10px 4px 4px;font-size:13px;font-weight:700;color:var(--bw-ink-3,#66789c)}
.mp-chapter{
  min-height:52px;padding:8px 12px;display:grid;gap:2px;
  border:1px solid var(--bw-line,#dce8f5);border-radius:10px;background:var(--bw-card,#fff);
  cursor:pointer;text-align:left;
}
.mp-chapter b{font-size:15px;color:var(--bw-ink,#0a2348);font-weight:600}
.mp-chapter span{font-size:13px;color:var(--bw-ink-3,#66789c)}
.mp-chapter:hover{border-color:var(--bw-blue,#087bff)}

/* ── 地图区 ─────────────────────────────────────────── */
.mp-map{position:relative;border-radius:var(--bw-radius,12px);overflow:hidden;border:1px solid var(--bw-line,#dce8f5);background:#eaf3fd;min-width:0}
.mp-canvas{position:absolute;inset:0}
.mp-map-tools{
  position:absolute;left:12px;bottom:12px;right:12px;z-index:5;
  display:flex;gap:8px;align-items:center;pointer-events:none;
}
.mp-map-tools>*{pointer-events:auto}
.mp-open-btn,.mp-tool-btn{
  min-height:44px;padding:8px 16px;
  border:1px solid var(--bw-line,#dce8f5);border-radius:22px;
  background:#ffffffe6;color:var(--bw-ink,#0a2348);
  font-size:14px;font-weight:600;cursor:pointer;
  box-shadow:0 4px 14px #0a234812;
}
.mp-open-btn:hover,.mp-tool-btn:hover{border-color:var(--bw-blue,#087bff);color:var(--bw-blue,#087bff)}
.mp-map-tools #mpOpenRight{margin-left:auto}

/* ── 右栏 ───────────────────────────────────────────── */
#mpRightBody{padding:14px}
.mp-prov-head{padding:18px 16px;border-radius:12px;border:1px solid var(--bw-line,#dce8f5)}
.mp-prov-head h2{margin:0;font-size:22px;color:var(--bw-ink,#0a2348)}
.mp-prov-head p{margin:6px 0 10px;font-size:14px;color:var(--bw-ink-2,#42557a)}
.mp-spot-list{display:grid}
.mp-spot-row{
  display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;
  min-height:52px;padding:10px 14px;text-align:left;
  border:0;border-bottom:1px solid var(--bw-line,#dce8f5);
  background:transparent;cursor:pointer;
}
.mp-spot-row:last-child{border-bottom:0}
.mp-spot-row:hover{background:var(--bw-page,#f3f8fe)}
.mp-spot-name{font-size:16px;color:var(--bw-ink,#0a2348);font-weight:600}
.mp-spot-meta{font-size:13px;color:var(--bw-ink-3,#66789c)}
.mp-spot-head h2{margin:0 0 4px;font-size:22px;color:var(--bw-ink,#0a2348)}
.mp-spot-loc{margin:0 0 10px;font-size:14px;color:var(--bw-ink-2,#42557a)}
.mp-spot-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.mp-cover-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.mp-cover-cell{border:1px solid var(--bw-line,#dce8f5);border-radius:10px;overflow:hidden;padding:0;cursor:pointer;background:var(--bw-page,#f3f8fe)}
.mp-cover-cell img{display:block;width:100%;height:72px;object-fit:cover}
.mp-gallery-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mp-gallery-cell{
  border:1px solid var(--bw-line,#dce8f5);border-radius:12px;overflow:hidden;padding:0;
  background:var(--bw-card,#fff);cursor:pointer;text-align:left;
}
.mp-gallery-cell img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}
.mp-gallery-cell span{display:block;padding:8px 10px;font-size:13px;color:var(--bw-ink-2,#42557a)}
.mp-image-view{margin:0}
.mp-image-view img{display:block;width:100%;border-radius:12px;border:1px solid var(--bw-line,#dce8f5)}
.mp-image-view figcaption{padding:10px 2px;font-size:13px;color:var(--bw-ink-3,#66789c)}
.mp-image-nav{display:flex;gap:10px;margin-top:8px}
.mp-practice{margin:-4px 0}

/* ── 1200–1359:缩间距不缩字 ─────────────────────────── */
@media (max-width:1359px) and (min-width:1200px){
  .map-pilot{grid-template-columns:232px 1fr 336px;gap:12px;padding:12px}
  .map-pilot.mp-left-closed{grid-template-columns:0 1fr 336px}
  .map-pilot.mp-right-closed{grid-template-columns:232px 1fr 0}
  .map-pilot.mp-left-closed.mp-right-closed{grid-template-columns:0 1fr 0}
}
/* ── 768–1199:一次一个面板(另一入口保留为按钮) ─────── */
@media (max-width:1199px) and (min-width:768px){
  .map-pilot{grid-template-columns:minmax(280px,300px) 1fr;gap:12px;padding:12px}
  .map-pilot .mp-right{position:absolute;top:12px;bottom:12px;right:12px;width:min(340px,46vw);z-index:10}
  .map-pilot.mp-left-closed{grid-template-columns:0 1fr}
  .mp-map-tools{flex-wrap:wrap}
}
/* ── <768:全幅地图 + 一次一个底部抽屉 ───────────────── */
@media (max-width:767px){
  .map-pilot{grid-template-columns:1fr;gap:0;padding:0;border-radius:0}
  .map-pilot .mp-left,.map-pilot .mp-right{
    position:absolute;left:0;right:0;bottom:0;z-index:10;
    max-height:66vh;border-radius:12px 12px 0 0;border-bottom:0;
  }
  .map-pilot.mp-left-closed .mp-left{display:none}
  .map-pilot.mp-right-closed .mp-right{display:none}
  .mp-map-tools{flex-wrap:wrap}
  #mpRightBody{padding:12px}
}

/* R05:大图缩放 */
.mp-image-stage{overflow:auto;border-radius:12px;border:1px solid var(--bw-line,#dce8f5);background:#eaf3fd;max-height:56vh}
.mp-image-stage img{display:block;width:100%;transform-origin:center top;transition:transform .15s ease}
.mp-image-tools{display:flex;align-items:center;gap:8px;margin-top:8px}
.mp-image-tools .bw-btn{min-width:44px;min-height:40px;padding:6px 12px}
.mp-zoom-level{font-size:13px;color:var(--bw-ink-2,#42557a);min-width:48px;text-align:center}
