/* ============================================================
 * 踏遍青山 —— 长征经典诗词互动地图
 * 国画山河风 · 深红描金 · 穿越式开篇
 * ============================================================ */
:root{
  --red-deep:#5f0f18; --red-dark:#7a1420; --red:#a11d2a; --red-bright:#c1352f;
  --gold:#c9a15f; --gold-light:#e8cf9a; --gold-pale:rgba(201,161,95,.32);
  --paper:#f7f1e3; --paper-deep:#efe4cd; --ink:#2b1d14; --ink-2:#4a3a2e; --ink-3:#7d6a57;
  --panel-bg:rgba(247,241,227,.97); --shadow:0 18px 50px rgba(20,4,6,.45);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%;overflow:hidden;font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:#1a0a0a}
button{cursor:pointer;font-family:inherit;border:none;background:none;color:inherit}
input,textarea{font-family:inherit}

/* ===== 顶栏 ===== */
.topbar{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;gap:18px;padding:12px 22px;
  background:linear-gradient(180deg,rgba(52,9,14,.94),rgba(38,6,10,.86));backdrop-filter:blur(12px);
  border-bottom:1px solid rgba(201,161,95,.4);box-shadow:0 6px 24px rgba(20,4,6,.45)}
.brand{display:flex;align-items:center;gap:14px}
.brand-mark{width:42px;height:42px;border-radius:50%;
  background:radial-gradient(circle at 32% 28%,rgba(232,207,154,.28),transparent 46%),linear-gradient(145deg,var(--red-bright),var(--red-deep));
  border:2px solid var(--gold-light);box-shadow:0 0 0 3px rgba(201,161,95,.22),0 6px 16px rgba(0,0,0,.4);position:relative;flex-shrink:0}
.brand-mark::after{content:"山";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:var(--gold-light);font-family:"Noto Serif SC",serif;font-weight:700;font-size:22px}
.brand-text h1{font-family:"Noto Serif SC",serif;font-size:21px;font-weight:700;letter-spacing:6px;color:var(--gold-light);line-height:1.25}
.brand-text p{font-size:11px;color:rgba(247,241,227,.72);letter-spacing:3px;margin-top:1px}
.search-box{flex:1;display:flex;align-items:center;max-width:540px;background:rgba(247,241,227,.08);
  border:1px solid rgba(201,161,95,.45);border-radius:999px;padding:5px 6px 5px 18px}
.search-box input{flex:1;border:none;outline:none;background:transparent;height:34px;font-size:14px;color:var(--paper);min-width:0}
.search-box input::placeholder{color:rgba(247,241,227,.5)}
#searchBtn{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--red-deep);
  background:linear-gradient(145deg,var(--gold-light),var(--gold));flex-shrink:0}
.top-actions{display:flex;align-items:center;gap:12px}
.icon-btn{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  color:rgba(247,241,227,.85);background:rgba(247,241,227,.08);border:1px solid rgba(201,161,95,.35)}
.icon-btn.active{color:var(--red-deep);background:linear-gradient(145deg,var(--gold-light),var(--gold))}
.restore-btn{height:40px;padding:0 18px;border-radius:999px;border:1px solid rgba(201,161,95,.7);color:var(--gold-light);
  background:linear-gradient(180deg,rgba(193,53,47,.35),rgba(95,15,24,.55));font-size:13px;letter-spacing:1px;font-family:"Noto Serif SC",serif}
.restore-btn:hover{background:linear-gradient(145deg,var(--gold-light),var(--gold));color:var(--red-deep)}

/* ===== 地图 ===== */
#mapContainer{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;opacity:0;transition:opacity 2s ease}
#mapContainer.show{opacity:1}

/* ===== 开篇封面（国画山河） ===== */
#introOverlay{position:fixed;inset:0;z-index:1000;overflow:hidden;
  background:radial-gradient(ellipse at 50% 30%,rgba(193,53,47,.25),transparent 60%),#1a0a0a;
  transition:opacity 1.2s ease;display:flex;align-items:center;justify-content:center}
#introOverlay.leaving{opacity:0;pointer-events:none}

/* 国画画布：整屏SVG山水 */
#inkCanvas{position:absolute;inset:0;z-index:0;overflow:hidden}
#inkCanvas svg{width:100%;height:100%;display:block;
  animation:inkSlowPan 30s ease-in-out infinite alternate}
@keyframes inkSlowPan{
  0%{transform:scale(1) translate(0,0)}
  100%{transform:scale(1.08) translate(-1%,1%)}
}
/* 穿越时：山河猛地推近再淡出 */
#inkCanvas.crossing svg{
  animation:inkCross 2.8s cubic-bezier(.7,0,.3,1) forwards;
}
@keyframes inkCross{
  0%{transform:scale(1)}
  40%{transform:scale(1.15)}
  100%{transform:scale(2.2);opacity:0;filter:blur(8px)}
}

.intro-inner{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 24px;
  transition:opacity 1s ease, transform 1s ease}
#introOverlay.leaving .intro-inner{opacity:0;transform:translateY(-30px)}

.intro-star{width:clamp(64px,9vw,92px);height:auto;filter:drop-shadow(0 8px 28px rgba(193,53,47,.55));
  animation:starPulse 3.2s ease-in-out infinite}
@keyframes starPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.intro-title{font-family:"Noto Serif SC",serif;font-size:clamp(52px,9vw,104px);font-weight:900;
  letter-spacing:clamp(12px,3vw,34px);color:var(--gold-light);
  text-shadow:0 2px 0 rgba(95,15,24,.9),0 0 40px rgba(232,207,154,.4),0 10px 40px rgba(193,53,47,.45);
  margin-top:26px;line-height:1.15}
.intro-rule{width:min(420px,72vw);height:1px;margin:30px auto 0;
  background:linear-gradient(90deg,transparent,var(--gold-light) 20%,var(--gold-light) 80%,transparent);position:relative}
.intro-rule::before{content:"";position:absolute;top:50%;left:50%;width:7px;height:7px;
  transform:translate(-50%,-50%) rotate(45deg);background:var(--gold-light);box-shadow:0 0 12px rgba(232,207,154,.8)}
.intro-sub{font-family:"Noto Serif SC",serif;font-size:clamp(15px,2.2vw,21px);letter-spacing:clamp(4px,1vw,10px);
  color:rgba(247,241,227,.92);margin-top:18px;text-shadow:0 1px 4px rgba(0,0,0,.8)}
.intro-route{width:min(620px,84vw);margin-top:42px;opacity:.85}
.intro-route svg{display:block;width:100%;height:auto}
.intro-meta{margin-top:26px;font-size:clamp(11px,1.6vw,13px);letter-spacing:3px;color:rgba(232,207,154,.75)}
.intro-enter{margin-top:40px;height:52px;padding:0 46px;border-radius:999px;
  border:1px solid var(--gold-light);color:var(--gold-light);background:rgba(193,53,47,.16);
  font-family:"Noto Serif SC",serif;font-size:17px;letter-spacing:8px;text-indent:8px;transition:all .28s;
  box-shadow:0 0 0 5px rgba(201,161,95,.08)}
.intro-enter:hover{background:linear-gradient(145deg,var(--gold-light),var(--gold));color:var(--red-deep);
  transform:translateY(-2px);box-shadow:0 10px 34px rgba(201,161,95,.4)}
.intro-tip{margin-top:22px;font-size:11px;letter-spacing:2px;color:rgba(247,241,227,.5)}

/* ===== 说明页 ===== */
#guideOverlay{position:fixed;inset:0;z-index:999;display:none;align-items:center;justify-content:center;
  background:rgba(10,5,5,.92);backdrop-filter:blur(10px)}
#guideOverlay.show{display:flex}
#guideCard{text-align:center;color:#e8d8b0;padding:44px 64px;border:1px solid var(--gold-light);
  background:linear-gradient(180deg,rgba(60,15,10,.7),rgba(30,8,5,.7));max-width:560px;
  box-shadow:0 0 60px rgba(193,53,47,.2)}
#guideCard h2{color:var(--gold-light);font-family:"Noto Serif SC",serif;font-size:30px;letter-spacing:6px;margin-bottom:22px}
#guideCard p{font-size:19px;line-height:2;letter-spacing:2px;font-family:"Noto Serif SC",serif}
#guideCard p b{color:var(--gold-light)}
#guideBtn{margin-top:30px;padding:12px 44px;background:transparent;border:1px solid var(--gold-light);
  color:var(--gold-light);font-size:17px;letter-spacing:4px;font-family:"Noto Serif SC",serif;transition:all .3s}
#guideBtn:hover{background:var(--gold-light);color:var(--red-deep);box-shadow:0 0 30px rgba(232,207,154,.4)}

/* ===== 侧边弹窗 ===== */
.side-panel{position:fixed;top:76px;right:20px;width:396px;max-height:calc(100vh - 108px);
  background:var(--panel-bg);
  background-image:radial-gradient(circle at 12% 8%,rgba(201,161,95,.08),transparent 40%),
    radial-gradient(circle at 90% 95%,rgba(161,29,42,.06),transparent 42%);
  border:1px solid rgba(201,161,95,.65);border-radius:4px;box-shadow:var(--shadow);z-index:200;
  display:flex;flex-direction:column;overflow:hidden;animation:slideIn .4s cubic-bezier(.22,1,.36,1)}
@keyframes slideIn{from{transform:translateX(26px);opacity:0}to{transform:translateX(0);opacity:1}}
.hidden{display:none!important}
.panel-header{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 20px 14px;
  background:linear-gradient(180deg,var(--red-dark),var(--red-deep));border-bottom:1px solid rgba(201,161,95,.55);position:relative}
.panel-header::after{content:"";position:absolute;left:20px;right:20px;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(232,207,154,.8),transparent)}
.panel-title{min-width:0;flex:1}
.panel-title h2{font-family:"Noto Serif SC",serif;font-size:19px;font-weight:700;letter-spacing:3px;color:var(--gold-light);margin-bottom:3px}
.poem-title{display:inline-block;font-size:14px;color:rgba(247,241,227,.95);font-weight:500;margin-top:3px}
.poem-author{font-size:12px;color:rgba(232,207,154,.8);margin-left:4px}
.sub-name{font-family:"Noto Serif SC",serif;font-size:13px;color:rgba(247,241,227,.85)}
.close-btn{width:30px;height:30px;border-radius:50%;font-size:20px;line-height:1;color:rgba(247,241,227,.85);
  display:flex;align-items:center;justify-content:center;border:1px solid rgba(232,207,154,.35)}
.close-btn:hover{background:var(--red-bright);color:#fff;transform:rotate(90deg)}
.panel-body{padding:18px 20px 20px;overflow-y:auto;flex:1}
.poem-box{background:linear-gradient(135deg,rgba(201,161,95,.08),transparent 55%),var(--paper-deep);
  border-left:3px solid var(--red);border:1px solid rgba(201,161,95,.35);border-left-width:3px;
  border-radius:0 4px 4px 0;padding:16px 18px;margin-bottom:16px;min-height:60px}
.poem-content{font-family:"Noto Serif SC",serif;font-size:16.5px;line-height:2.1;color:var(--ink);
  white-space:pre-wrap;letter-spacing:1px;font-weight:500}
.poem-content::after{content:"▌";color:var(--red);animation:blink 1s steps(1) infinite;margin-left:2px}
.poem-content.done::after{display:none}
@keyframes blink{50%{opacity:0}}
.poem-actions{display:flex;flex-wrap:wrap;gap:10px}
.ghost-btn,.primary-btn{height:37px;padding:0 15px;border-radius:3px;font-size:13px;font-weight:500;
  display:inline-flex;align-items:center;gap:6px}
.ghost-btn{background:rgba(247,241,227,.9);border:1px solid rgba(122,20,32,.28);color:var(--ink-2)}
.ghost-btn:hover{border-color:var(--red);color:var(--red-dark);background:#fff}
.primary-btn{background:linear-gradient(145deg,var(--red-bright),var(--red-dark));border:1px solid rgba(232,207,154,.5);color:var(--gold-light)}
.history-img{width:100%;max-height:220px;object-fit:cover;border-radius:3px;margin-bottom:14px;
  background:var(--paper-deep);border:1px solid rgba(201,161,95,.4)}
.history-text{font-size:14px;line-height:2;color:var(--ink-2);white-space:pre-wrap;font-family:"Noto Serif SC",serif}
.img-source{margin-top:14px;font-size:11px;color:var(--ink-3);text-align:right}
.edit-form{display:flex;flex-direction:column;gap:14px}
.edit-form label{display:flex;flex-direction:column;gap:6px}
.edit-form label span{font-size:13px;font-weight:600;color:var(--ink-2)}
.edit-form input,.edit-form textarea{width:100%;border:1px solid rgba(122,20,32,.22);border-radius:3px;
  padding:10px 12px;font-size:14px;color:var(--ink);background:rgba(255,255,255,.7)}
.edit-form textarea{resize:vertical;line-height:1.7;font-family:"Noto Serif SC",serif}
.form-actions{display:flex;justify-content:flex-end;gap:10px}
.form-tip{margin-top:14px;font-size:12px;color:var(--ink-3)}

/* Toast */
.toast{position:fixed;top:84px;left:50%;transform:translateX(-50%) translateY(-10px);
  background:linear-gradient(180deg,rgba(52,9,14,.95),rgba(38,6,10,.95));border:1px solid rgba(201,161,95,.6);
  color:var(--gold-light);padding:11px 22px;border-radius:999px;font-size:13px;letter-spacing:1px;z-index:999;
  opacity:0;pointer-events:none;transition:all .3s;max-width:80vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* 底部 */
.footer{position:fixed;bottom:0;left:0;right:0;z-index:50;padding:9px 18px;
  background:linear-gradient(180deg,rgba(38,6,10,.7),rgba(26,4,7,.85));border-top:1px solid rgba(201,161,95,.35);text-align:center}
.footer p{font-size:12px;color:rgba(232,207,154,.72);line-height:1.6}

/* 操作气泡 */
.bubble{position:fixed;z-index:300;background:rgba(20,10,10,.93);border:1px solid var(--gold-light);
  color:#e8d8b0;padding:12px 18px;font-size:14px;line-height:1.7;max-width:260px;
  box-shadow:0 4px 20px rgba(0,0,0,.6);animation:bubbleIn .5s ease;font-family:"Noto Serif SC",serif}
@keyframes bubbleIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.bubble .b-close{position:absolute;top:2px;right:8px;cursor:pointer;color:var(--gold-light);font-size:18px}
.bubble b{color:var(--gold-light)}

@media (max-width:768px){
  .side-panel{top:auto;bottom:0;left:0;right:0;width:100%;max-height:74vh}
  .topbar{flex-wrap:wrap}
  .search-box{order:3;flex-basis:100%;max-width:100%}
}
/* （注：内容由AI生成） */
