*{box-sizing:border-box}body{margin:0;background:var(--bg,#f3f7fb);color:var(--text,#20354b);font:14px "Microsoft YaHei UI",sans-serif}.map-page{padding:20px;max-width:2000px;margin:auto}.map-page header{display:flex;align-items:center;gap:16px;margin-bottom:16px}.map-page h1{font-size:24px;margin:0}.map-page header>a{margin-left:auto;text-decoration:none}.map-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.map-tools input{flex:1;min-width:180px;max-width:340px}.map-page input,.map-page textarea{font:inherit;padding:10px 12px;background:#fff;border:1px solid #dbe5ef;border-radius:8px;color:inherit}.map-page [hidden]{display:none!important}#status{margin:8px 0;min-height:20px;color:#59718d}.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:16px}#viewport{height:calc(100dvh - 172px);min-height:360px;overflow:auto;border:1px solid #dbe5ef;border-radius:8px;background:#eaf0f6;touch-action:none}#stage{position:relative;flex:none}#photo{width:100%;height:100%;display:block;user-select:none}#pins{position:absolute;inset:0;pointer-events:none}.map-pin{position:absolute;transform:translate(-50%,-50%);border:2px solid white;border-radius:50%;width:30px;height:30px;background:#159d92;color:#fff;font-weight:600;box-shadow:0 1px 4px #20354b55;pointer-events:auto;cursor:pointer;touch-action:none}.map-pin.match,.map-pin.selected{background:#2563eb;outline:3px solid #a8c8ff}.map-pin.dim{opacity:.35}#empty{padding:100px 20px;text-align:center;color:#71849b}aside{background:#fff;border:1px solid #dbe5ef;border-radius:8px;padding:14px;overflow:auto;max-height:calc(100dvh - 172px)}aside h2{font-size:16px;margin:0 0 12px}#results{display:flex;flex-direction:column;gap:6px;max-height:210px;overflow:auto}.map-result{padding:10px;text-align:left;background:#f5f8fc;border:1px solid #dbe5ef;border-radius:6px;cursor:pointer;color:inherit}.map-result.selected{border-color:#159d92;background:#e6f4f1}#details{border-top:1px solid #e3eaf2;margin-top:12px;padding-top:4px}#details label{display:flex;flex-direction:column;gap:4px;margin:10px 0}#details input,#details textarea{width:100%}.map-page .btn{min-height:36px;white-space:nowrap}@media(max-width:760px){.map-page{padding:12px}.map-page header{gap:8px}.map-page h1{font-size:20px}#identity{display:none}.map-layout{grid-template-columns:1fr;gap:10px}#viewport{height:52dvh;min-height:300px}aside{max-height:none}.map-tools input{max-width:none}.map-page .btn{min-height:42px}#results{max-height:160px}}
