*{margin:0;padding:0;box-sizing:border-box}
body{background:#080f0d;font-family:'PingFang SC','Microsoft YaHei',sans-serif;color:#cdd8cd;overflow:hidden}

/* TOP BAR */
#topbar{position:fixed;top:0;left:0;right:0;z-index:1000;height:56px;background:rgba(8,15,13,.97);border-bottom:1px solid rgba(78,204,163,.15);backdrop-filter:blur(16px);display:flex;align-items:center;gap:8px;padding:0 16px;overflow-x:auto;scrollbar-width:none}
#topbar::-webkit-scrollbar{display:none}
.logo{display:flex;flex-direction:column;justify-content:center;margin-right:6px;flex-shrink:0}
.logo h1{font-size:14px;font-weight:400;letter-spacing:.28em;color:#e2ede2;text-transform:uppercase;white-space:nowrap}
.logo p{font-size:8px;letter-spacing:.18em;color:#3d8060;text-transform:uppercase;margin-top:2px}
.bdv{width:1px;height:26px;background:rgba(78,204,163,.15);flex-shrink:0}
/* sector segmented */
.seg{display:flex;border:1px solid rgba(78,204,163,.22);border-radius:3px;overflow:hidden;flex-shrink:0}
.seg button{font-size:11px;padding:5px 12px;background:transparent;color:#6a8a7a;border:none;cursor:pointer;font-family:inherit;transition:all .15s}
.seg button.on{background:rgba(78,204,163,.16);color:#bfe6d2}
.seg button:not(:last-child){border-right:1px solid rgba(78,204,163,.15)}
.srch{position:relative;flex-shrink:0}
.srch input{background:rgba(78,204,163,.06);border:1px solid rgba(78,204,163,.18);color:#c8d8c8;font-size:11px;padding:5px 10px 5px 26px;width:130px;outline:none;border-radius:2px;font-family:inherit}
.srch input::placeholder{color:#3d6050}
.srch input:focus{border-color:rgba(78,204,163,.4)}
.srch-ic{position:absolute;left:8px;top:50%;transform:translateY(-50%);color:#3d8060;font-size:11px;pointer-events:none}
select.fs{background:rgba(78,204,163,.06);border:1px solid rgba(78,204,163,.18);color:#a8c8a8;font-size:10px;padding:5px 20px 5px 8px;outline:none;border-radius:2px;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%234a8a6a'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 7px center;font-family:inherit;flex-shrink:0}
select.fs:focus{border-color:rgba(78,204,163,.4)}
select.fs option{background:#0d1f18;color:#c8d8c8}
#entryBtn{font-size:10px;padding:5px 11px;border:1px solid rgba(240,136,62,.35);color:#e8975a;background:transparent;cursor:pointer;border-radius:2px;font-family:inherit;white-space:nowrap;flex-shrink:0;transition:all .2s}
#entryBtn:hover,#entryBtn.on{border-color:#f0883e;color:#f0a060;background:rgba(240,136,62,.08)}
#comBtn{font-size:11px;padding:5px 12px;border:1px solid rgba(176,184,200,.3);color:#8a94a8;background:transparent;cursor:pointer;border-radius:3px;font-family:inherit;white-space:nowrap;flex-shrink:0;transition:all .2s}
#comBtn:hover{border-color:rgba(176,184,200,.55);color:#b0b8c8}
#comBtn.on{border-color:#b0b8c8;color:#d0d8e8;background:rgba(176,184,200,.12)}
#comBtn span{font-size:9px;opacity:.75}
.cnt{margin-left:auto;font-size:10px;letter-spacing:.12em;color:#4ecca3;border:1px solid rgba(78,204,163,.25);padding:4px 10px;white-space:nowrap;flex-shrink:0}
.cnt b{color:#bfe6d2;font-weight:500}
#adminLk,#logoutLk{font-size:10px;color:#4a8a6a;text-decoration:none;border:1px solid rgba(78,204,163,.18);padding:4px 9px;border-radius:2px;white-space:nowrap;flex-shrink:0;transition:all .2s}
#adminLk:hover,#logoutLk:hover{color:#4ecca3;border-color:rgba(78,204,163,.4)}

/* MAP */
#map{position:fixed;top:56px;left:0;right:0;bottom:0}

/* CARD */
#card{position:fixed;top:56px;right:-460px;bottom:0;z-index:900;width:430px;overflow-y:auto;background:rgba(8,15,13,.97);border-left:1px solid rgba(78,204,163,.15);backdrop-filter:blur(24px);transition:right .5s cubic-bezier(.4,0,.2,1);scrollbar-width:thin;scrollbar-color:rgba(78,204,163,.2) transparent}
#card.open{right:0}
#card::-webkit-scrollbar{width:3px}#card::-webkit-scrollbar-thumb{background:rgba(78,204,163,.2)}
.ci{padding:24px 26px 40px}
.cc{position:absolute;top:14px;right:14px;width:24px;height:24px;cursor:pointer;color:#4a8a6a;font-size:14px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(74,138,106,.3);border-radius:50%;background:transparent;transition:all .2s}
.cc:hover{color:#4ecca3;border-color:#4ecca3}
.c-loc{font-size:9px;letter-spacing:.28em;color:#3d8060;text-transform:uppercase;margin-bottom:6px}
.c-name{font-size:19px;font-weight:300;color:#e2ede2;letter-spacing:.03em;line-height:1.3;margin-bottom:4px}
.c-tc{font-size:11px;color:#4a6a5a;margin-bottom:10px}
.c-sub{font-size:12px;color:#8aae98;margin-bottom:10px;line-height:1.5}
.c-badges{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:14px}
.badge{font-size:9px;letter-spacing:.06em;padding:2px 9px;border-radius:20px;white-space:nowrap}
.b-active{background:rgba(78,204,163,.12);color:#4ecca3;border:1px solid rgba(78,204,163,.35)}
.b-build{background:rgba(232,193,109,.12);color:#e8c16d;border:1px solid rgba(232,193,109,.35)}
.b-plan{background:rgba(147,197,253,.12);color:#93c5fd;border:1px solid rgba(147,197,253,.35)}
.b-reno{background:rgba(251,146,60,.12);color:#fb923c;border:1px solid rgba(251,146,60,.35)}
.b-trial{background:rgba(167,139,250,.12);color:#a78bfa;border:1px solid rgba(167,139,250,.35)}
.b-bid{background:rgba(232,193,109,.12);color:#e8c16d;border:1px solid rgba(232,193,109,.35)}
.b-sec-m{background:rgba(78,204,163,.08);color:#5aaa80;border:1px solid rgba(78,204,163,.25)}
.b-sec-i{background:rgba(240,136,62,.1);color:#e8975a;border:1px solid rgba(240,136,62,.3)}
.b-sec-c{background:rgba(176,184,200,.1);color:#a8b0c0;border:1px solid rgba(176,184,200,.3)}
.b-mem-y{background:rgba(78,204,163,.12);color:#4ecca3;border:1px solid rgba(78,204,163,.35)}
.b-mem-n{background:rgba(138,154,138,.1);color:#8a9a8a;border:1px solid rgba(138,154,138,.3)}
.b-mem-o{background:rgba(232,193,109,.1);color:#c8a860;border:1px solid rgba(232,193,109,.3)}
.b-cred-h{background:rgba(78,204,163,.1);color:#4ecca3;border:1px solid rgba(78,204,163,.3)}
.b-cred-m{background:rgba(232,193,109,.1);color:#c8a860;border:1px solid rgba(232,193,109,.3)}
.b-cred-l{background:rgba(251,100,60,.1);color:#f08060;border:1px solid rgba(251,100,60,.3)}
.b-flag{background:rgba(232,193,109,.16);color:#e8c16d;border:1px solid rgba(232,193,109,.5);font-weight:600}
.sec{margin-bottom:16px}
.sec-hd{font-size:8px;letter-spacing:.32em;color:#3d8060;text-transform:uppercase;margin-bottom:10px;display:flex;align-items:center;gap:8px}
.sec-hd::after{content:'';flex:1;height:1px;background:rgba(78,204,163,.1)}
.sec-hd .tag{font-size:7px;padding:1px 6px;border:1px solid rgba(232,193,109,.4);color:#c8a060;letter-spacing:.1em;border-radius:2px}
.kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:4px}
.kv{margin-bottom:8px}
.kv label{display:block;font-size:8px;letter-spacing:.18em;color:#2d6045;text-transform:uppercase;margin-bottom:3px}
.kv span{font-size:12px;color:#a8c8a8;line-height:1.5}
.kv span.hi{color:#c8e0c8}
.kv.full{grid-column:span 2}
.box{background:rgba(78,204,163,.04);border:1px solid rgba(78,204,163,.1);border-radius:3px;padding:8px 12px;font-size:11px;color:#9ab8a0;line-height:1.7}
.warn{background:rgba(232,193,109,.05);border:1px solid rgba(232,193,109,.2);border-radius:3px;padding:8px 12px;font-size:11px;color:#b09050;line-height:1.6}
.opp{background:rgba(232,193,109,.05);border:1px solid rgba(232,193,109,.18);border-radius:4px;padding:12px 14px}
.opp .r{display:flex;justify-content:space-between;padding:4px 0;font-size:11px}
.opp .r .l{color:#7a6030;letter-spacing:.1em}
.opp .r .v{color:#d8b878}
.opp .note{font-size:11px;color:#c0a258;line-height:1.6;margin-top:8px;padding-top:8px;border-top:1px solid rgba(232,193,109,.15)}
.src-link{color:#4a8a6a;text-decoration:none;border-bottom:1px solid rgba(74,138,106,.3);font-size:11px;word-break:break-all}
.src-link:hover{color:#4ecca3}
.cprec{font-size:8px;color:#3d6050;margin-top:14px;letter-spacing:.08em;font-style:italic}

/* ENTRY PANEL */
#entry-panel{position:fixed;top:56px;right:-420px;bottom:0;z-index:880;width:390px;overflow-y:auto;background:rgba(10,12,11,.98);border-left:1px solid rgba(240,136,62,.2);backdrop-filter:blur(20px);transition:right .45s cubic-bezier(.4,0,.2,1);scrollbar-width:thin}
#entry-panel.open{right:0}
.ep-hd{padding:20px 22px 12px;position:sticky;top:0;background:rgba(10,12,11,.98);border-bottom:1px solid rgba(240,136,62,.12)}
.ep-hd h2{font-size:14px;font-weight:400;color:#e8975a;letter-spacing:.05em}
.ep-hd p{font-size:10px;color:#8a6a4a;margin-top:5px;line-height:1.5}
.ep-list{padding:8px 18px 40px}
.ep-cat{font-size:8px;letter-spacing:.25em;color:#7a5a3a;text-transform:uppercase;margin:16px 0 8px}
.ep-item{background:rgba(240,136,62,.04);border:1px solid rgba(240,136,62,.1);border-radius:3px;padding:10px 12px;margin-bottom:7px}
.ep-item .nm{font-size:12px;color:#d8c0a8;margin-bottom:3px}
.ep-item .lb{font-size:10px;color:#8a7a5a}
.ep-item .meta{font-size:8px;color:#6a5a3a;margin-top:4px;letter-spacing:.05em}

/* LEGEND */
.legend{position:fixed;bottom:22px;left:18px;z-index:800;background:rgba(8,15,13,.9);border:1px solid rgba(78,204,163,.13);backdrop-filter:blur(10px);padding:12px 15px;pointer-events:none;max-width:200px}
.legend-t{font-size:8px;letter-spacing:.26em;color:#3d8060;text-transform:uppercase;margin-bottom:9px}
.li{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.li:last-child{margin-bottom:0}
.li-mk{width:11px;height:11px;border:2px solid;flex-shrink:0;background:rgba(8,15,13,.6)}
.li-mk.circ{border-radius:50%}.li-mk.sq{border-radius:2px}
.li-lb{font-size:10px;color:#7a9a8a}
.legend-note{font-size:8px;color:#4a6a5a;margin-top:8px;padding-top:8px;border-top:1px solid rgba(78,204,163,.08);line-height:1.6}

/* MARKERS */
.mk{position:relative;display:flex;align-items:center;justify-content:center}
.mk-p{position:absolute;border-radius:50%;animation:pulse 3s ease-out infinite;pointer-events:none}
.mk-c{border:2px solid;background:rgba(8,15,13,.78);position:relative;z-index:2;transition:transform .15s}
.mk-c.circ{border-radius:50%}.mk-c.sq{border-radius:2px}
.mk-c:hover,.mk-c.act{transform:scale(1.7)}
@keyframes pulse{0%{transform:scale(.4);opacity:.6}100%{transform:scale(2.6);opacity:0}}
.leaflet-control-attribution{background:rgba(8,15,13,.75)!important;color:#2d5040!important;font-size:8px!important}
.leaflet-control-attribution a{color:#3d7055!important}
.leaflet-control-zoom a{background:rgba(8,15,13,.88)!important;color:#4ecca3!important;border-color:rgba(78,204,163,.2)!important}
.leaflet-control-zoom a:hover{background:rgba(78,204,163,.1)!important}

/* COMMERCIAL CLUSTERS（覆盖 markercluster 默认蓝色主题） */
.bm-cluster{background:rgba(8,15,13,.85);border:2px solid #b0b8c8;border-radius:50%;color:#d0d8e8;display:flex;align-items:center;justify-content:center;font-size:11px;font-family:inherit;box-shadow:0 0 8px rgba(176,184,200,.35)}
.marker-cluster-spider-leg{stroke:#b0b8c8!important}
