:root{
  --bg:#0b1020; --panel:#141a30; --panel2:#1b2340; --line:#2a3358;
  --text:#e8ecff; --muted:#8a93c4; --sun:#ffb347; --moon:#cfd8ff; --gc:#b57bff;
  --accent:#5aa2ff; --ok:#3ddc84; --warn:#ff7a7a;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);
  font:14px/1.5 "Segoe UI","Microsoft YaHei",system-ui,sans-serif;
  display:flex;flex-direction:column}

/* ---------- 顶栏 ---------- */
#topbar{display:flex;align-items:center;gap:12px;padding:8px 14px;
  background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}
#topbar h1{font-size:18px;margin:0;font-weight:700}
#topbar h1 span{color:var(--accent)}
#searchForm{display:flex;gap:6px;flex:1;min-width:200px;max-width:420px}
#searchInput{flex:1;background:var(--panel2);border:1px solid var(--line);
  border-radius:8px;color:var(--text);padding:6px 10px;outline:none}
#searchInput:focus{border-color:var(--accent)}
#topbar button{background:var(--panel2);border:1px solid var(--line);color:var(--text);
  border-radius:8px;padding:6px 12px;cursor:pointer}
#topbar button:hover{border-color:var(--accent)}
.badge{font-size:12px;color:var(--muted);border:1px solid var(--line);
  border-radius:999px;padding:2px 10px}
.badge.online{color:var(--ok);border-color:var(--ok)}
.badge.offline{color:var(--warn);border-color:var(--warn)}

/* ---------- 主区 ---------- */
main{flex:1;display:flex;min-height:0}
#mapWrap{flex:1;position:relative;min-width:0}
#map{position:absolute;inset:0;background:#0a0f1e}
#mapHint{position:absolute;left:12px;bottom:12px;z-index:500;pointer-events:none;
  background:rgba(20,26,48,.85);border:1px solid var(--line);border-radius:8px;
  padding:4px 10px;font-size:12px;color:var(--muted)}

/* ---------- 地图图例 ---------- */
#legend{position:absolute;left:12px;top:76px;z-index:500;pointer-events:none;
  background:rgba(20,26,48,.88);border:1px solid var(--line);border-radius:10px;
  padding:8px 12px;font-size:12px;display:flex;flex-direction:column;gap:3px}
#legend b{font-size:12px;color:var(--text);margin-bottom:2px}
#legend span{color:var(--muted);display:flex;align-items:center}
#legend .dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;flex:none}
.dot.lsunr{background:#ffb347}
.dot.lsuns{background:#ff7a4d}
.dot.lmoon{background:#cfd8ff}
.dot.lgc{background:#b57bff}
.dot.lnow{background:#3ddc84}

/* ---------- 方位线文字标注 ---------- */
.azlabel{background:none!important;border:none!important;font-size:12px;font-weight:700;
  white-space:nowrap;text-shadow:0 0 4px #000,0 0 3px #000;pointer-events:none}

/* ---------- 浮动罗盘 ---------- */
#btnCompass{position:absolute;right:12px;top:12px;z-index:600;
  background:rgba(20,26,48,.92);border:1px solid var(--accent);color:var(--text);
  border-radius:10px;padding:8px 14px;font-size:14px;cursor:pointer}
#btnCompass:hover{background:rgba(90,162,255,.25)}
#compassFloat{position:absolute;right:12px;top:52px;z-index:600;width:300px;
  background:rgba(20,26,48,.94);backdrop-filter:blur(4px);box-shadow:0 8px 30px rgba(0,0,0,.5)}
#compassFloat.hidden{display:none}

/* ---------- 3D 天空视图 ---------- */
#sky3d{position:absolute;inset:0;z-index:700;background:#060a18}
#sky3d.hidden{display:none}
#skyCanvas{width:100%;height:100%;display:block;touch-action:none}
#skyClose{position:absolute;right:12px;top:12px;z-index:710;width:36px;height:36px;
  background:rgba(20,26,48,.92);border:1px solid var(--line);color:var(--text);
  border-radius:10px;font-size:16px;cursor:pointer}
#skyClose:hover{border-color:var(--accent)}
#btnGyro{position:absolute;left:12px;top:12px;z-index:710;
  background:rgba(20,26,48,.92);border:1px solid var(--accent);color:var(--text);
  border-radius:10px;padding:8px 14px;font-size:13px;cursor:pointer}
#btnGyro.active{background:rgba(61,220,132,.25);border-color:var(--ok)}
#skyHint{position:absolute;left:50%;transform:translateX(-50%);bottom:12px;z-index:710;pointer-events:none;
  background:rgba(20,26,48,.85);border:1px solid var(--line);border-radius:8px;
  padding:4px 10px;font-size:12px;color:var(--muted)}
#skyMini{position:absolute;left:12px;bottom:12px;z-index:710;width:250px;height:180px;
  border:1px solid var(--accent);border-radius:10px;overflow:hidden;box-shadow:0 4px 20px rgba(0,0,0,.5)}
#skyMini .leaflet-container{background:#0a0f1e}
#skyMiniLabel{position:absolute;left:12px;bottom:196px;z-index:710;pointer-events:none;
  font-size:11px;color:var(--muted);text-shadow:0 0 4px #000}
#skyStatus{position:absolute;right:12px;bottom:12px;z-index:710;pointer-events:none;
  background:rgba(20,26,48,.9);border:1px solid var(--line);border-radius:8px;
  padding:4px 12px;font-size:12px;color:var(--muted)}
#skyStatus.busy{color:var(--accent);border-color:var(--accent)}
#skyLegend{position:absolute;left:12px;top:76px;z-index:710;pointer-events:none;
  background:rgba(20,26,48,.88);border:1px solid var(--line);border-radius:10px;
  padding:8px 12px;font-size:12px;display:flex;flex-direction:column;gap:3px}
#skyLegend span{color:var(--muted);display:flex;align-items:center}
.dot.lseason{background:linear-gradient(90deg,#ffd9a0 33%,#9fe0b0 66%,#7ab8ff)}
.dot.ldim{background:#565668}

/* ---------- 关于弹窗 ---------- */
#btnAbout{background:var(--panel2);border:1px solid var(--line);color:var(--text);
  border-radius:8px;padding:6px 12px;cursor:pointer}
#btnAbout:hover{border-color:var(--accent)}
#aboutBox{position:fixed;inset:0;z-index:3000;background:rgba(5,8,18,.7);
  display:flex;align-items:center;justify-content:center}
#aboutBox.hidden{display:none}
.about-card{background:var(--panel);border:1px solid var(--accent);border-radius:14px;
  padding:22px 26px;max-width:560px;width:92vw;max-height:85vh;overflow-y:auto;
  box-shadow:0 10px 40px rgba(0,0,0,.6)}
.about-card h3{margin:0 0 10px;font-size:18px;color:var(--accent)}
.about-card p{margin:8px 0;font-size:13.5px}
.about-card ul{margin:6px 0;padding-left:20px}
.about-card li{margin:4px 0;font-size:13.5px}
.about-card b{color:var(--sun)}
.about-card button{margin-top:12px;background:var(--accent);border:none;color:#fff;
  border-radius:8px;padding:8px 22px;cursor:pointer;font-size:14px}

/* 小地图可拖拽机位标记 */
.camdot{background:none;border:none}
.camdot-inner{width:14px;height:14px;border-radius:50%;background:#3ddc84;
  border:2px solid #fff;box-shadow:0 0 8px rgba(61,220,132,.8);cursor:grab}
.camdot-inner:active{cursor:grabbing}

#side{width:400px;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:10px;
  background:var(--panel);border-left:1px solid var(--line)}
.card{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.card h2{font-size:14px;margin:0 0 8px;font-weight:600;color:var(--text)}
.row{display:flex;gap:8px;margin-bottom:6px;flex-wrap:wrap}
.row label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
input[type=number],input[type=date]{background:var(--panel);border:1px solid var(--line);
  color:var(--text);border-radius:8px;padding:4px 8px;width:110px;outline:none}
input:focus{border-color:var(--accent)}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.chips button{background:var(--panel);border:1px solid var(--line);color:var(--muted);
  border-radius:999px;padding:3px 12px;font-size:12px;cursor:pointer}
.chips button:hover{color:var(--text);border-color:var(--accent)}
.chips button.active{color:var(--accent);border-color:var(--accent)}

table.info{width:100%;border-collapse:collapse;font-size:13px}
table.info td{padding:3px 0;vertical-align:top}
table.info td:first-child{color:var(--muted);width:40%;padding-right:8px;white-space:nowrap}
table.info td:last-child{text-align:right;font-variant-numeric:tabular-nums}

/* ---------- 罗盘 ---------- */
#compass{width:100%;height:auto;display:block}
.legend{display:flex;gap:14px;font-size:12px;color:var(--muted);margin-top:6px;flex-wrap:wrap}
.legend .dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px}
.dot.sun{background:var(--sun)} .dot.moon{background:var(--moon)} .dot.gc{background:var(--gc)}
.muted{color:var(--muted)}

/* ---------- 底部时间条 ---------- */
#timebar{display:flex;align-items:center;gap:12px;padding:10px 14px;
  background:var(--panel);border-top:1px solid var(--line)}
#timeSlider{flex:1;accent-color:var(--accent)}
#btnPlay,#btnNow{background:var(--panel2);border:1px solid var(--line);color:var(--text);
  border-radius:8px;padding:6px 14px;cursor:pointer}
#btnPlay:hover,#btnNow:hover{border-color:var(--accent)}
.simtime{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;min-width:64px;text-align:center}

/* ---------- 提示条 ---------- */
.swtip{position:fixed;bottom:64px;left:50%;transform:translateX(-50%);z-index:2000;
  background:rgba(20,26,48,.95);border:1px solid var(--accent);border-radius:10px;
  padding:8px 16px;font-size:12px;color:var(--text);max-width:90vw}
.hidden{display:none}

/* ---------- Leaflet 暗色微调 ---------- */
.leaflet-container{background:#0a0f1e}
.leaflet-control-attribution{background:rgba(20,26,48,.8)!important;color:var(--muted)!important}
.leaflet-control-attribution a{color:var(--accent)!important}

@media (max-width:900px){
  main{flex-direction:column}
  #mapWrap{min-height:45vh}
  #side{width:100%;border-left:none;border-top:1px solid var(--line)}
}
