/* 驱蚊雷达界面。所有自定义类名统一使用 mh- 前缀。 */
:root{--mh-ink:#102d46;--mh-muted:#7590a5;--mh-blue:#147fe8;--mh-line:#dbe8f0;--mh-glass:rgba(250,253,255,.88);--mh-shadow:0 18px 60px rgba(21,53,77,.14)}
*{box-sizing:border-box}
html,body,#react-entry-point,.mh-map{width:100%;height:100%;min-height:100%;margin:0}
body.mh-body{overflow:hidden;font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--mh-ink);background:#d8e6ee;-webkit-font-smoothing:antialiased}
.mh-map{position:fixed;inset:0;z-index:0}
#mh-map{position:absolute;inset:0;background:#dbe8ed}
#mh-ui{position:fixed;inset:0;z-index:800;pointer-events:none}
#mh-ui [hidden]{display:none!important}
#mh-ui button,#mh-ui a,#mh-ui input,#mh-ui form{pointer-events:auto}
.mh-glass{background:var(--mh-glass);border:1px solid rgba(255,255,255,.92);box-shadow:var(--mh-shadow);backdrop-filter:blur(22px) saturate(155%);-webkit-backdrop-filter:blur(22px) saturate(155%)}
.mh-header{position:absolute;top:18px;left:22px;right:414px;height:72px;border-radius:19px;display:flex;align-items:center;padding:0 21px;gap:27px;pointer-events:auto}
.mh-brand{display:flex;align-items:center;gap:11px;color:inherit!important;text-decoration:none;white-space:nowrap}.mh-logo{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:linear-gradient(145deg,#1688f4,#1256a5);color:#fff;font-size:19px;font-weight:800;box-shadow:0 6px 18px #137ce640}.mh-brand b{display:block;font-size:21px;letter-spacing:1px;font-weight:750}.mh-brand small{display:block;margin-top:3px;font-size:8px;letter-spacing:1.8px;color:#718ba0;font-weight:700}
.mh-location{display:flex;align-items:center;gap:9px;padding-left:23px;border-left:1px solid #dbe6ed;color:#718ca1;font-size:12px;white-space:nowrap}.mh-location i{width:8px;height:8px;border-radius:50%;background:#20aa86;box-shadow:0 0 0 4px #20aa8617}.mh-location b{font-size:13px;color:#234a67;font-weight:650}
.mh-header-actions{margin-left:auto;display:flex;align-items:center;gap:20px}.mh-live{display:flex;align-items:center;gap:7px;font-size:10px;letter-spacing:.5px;color:#6a869c}.mh-live i{width:7px;height:7px;border-radius:50%;background:#25ae87;box-shadow:0 0 0 4px #25ae8718}.mh-role-link,.mh-text{font-size:12px;color:#426b87!important;text-decoration:none;white-space:nowrap}.mh-text{background:none;border:0;cursor:pointer}
.mh-title-block{position:absolute;left:32px;top:117px;text-shadow:0 1px 14px #fff;pointer-events:none}.mh-kicker{font-size:9px;font-weight:750;letter-spacing:2px;color:#3982b4}.mh-title-block h1{font-size:29px;letter-spacing:1px;margin:7px 0 5px;font-weight:720;color:#143b59}.mh-title-block p{font-size:12px;color:#627e93;margin:0}
.mh-task-switch{position:absolute;left:30px;top:230px;display:flex;align-items:center;gap:7px;padding:7px;border-radius:15px;pointer-events:auto}.mh-switch-caption{padding:0 8px;font-size:10px;color:#7690a4;letter-spacing:.5px}.mh-task-tab{border:1px solid transparent;background:transparent;border-radius:10px;padding:10px 14px;font:inherit;font-size:12px;font-weight:600;color:#5d7b93;cursor:pointer;transition:.18s}.mh-task-tab:hover{background:#eff7fc}.mh-task-tab.mh-task-active{background:#fff;color:#1373d1;border-color:#d9eafa;box-shadow:0 3px 12px #2078b514}
.mh-panel{position:absolute;top:108px;right:19px;bottom:18px;width:371px;border-radius:23px;padding:21px 21px 17px;display:flex;flex-direction:column;pointer-events:auto;overflow:hidden}
.mh-panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mh-panel-heading h2{font-size:17px;letter-spacing:.2px;margin:6px 0 0;font-weight:700;white-space:nowrap}.mh-complete{display:flex;align-items:center;gap:6px;color:#16866d;font-size:10px;white-space:nowrap;background:#e8f7f2;border-radius:18px;padding:7px 10px;margin-top:3px}.mh-complete i{width:6px;height:6px;border-radius:50%;background:#1aaa81}
.mh-stats{display:grid;grid-template-columns:repeat(3,1fr);margin:17px 0 15px;background:linear-gradient(120deg,#edf7ff,#f8fbff);border:1px solid #e1eef7;border-radius:14px;padding:14px 5px}.mh-stats>div{text-align:center;display:flex;flex-direction:column;gap:4px}.mh-stats>div+div{border-left:1px solid #d9e8f1}.mh-stats b{font-size:19px;line-height:1.15;font-variant-numeric:tabular-nums;color:#1d4f75}.mh-stats span{font-size:9px;color:#7b95a8}
.mh-toolbar{display:flex;gap:7px}.mh-button{border:1px solid #dce8f0;border-radius:10px;background:#fff;color:#426884;min-height:38px;padding:8px 11px;font:inherit;font-size:11px;font-weight:600;cursor:pointer;transition:background .16s,transform .16s,box-shadow .16s}.mh-button:hover{background:#f1f8fd;box-shadow:0 4px 12px #396c9210}.mh-button:active{transform:scale(.98)}.mh-button-primary{background:linear-gradient(125deg,#1685ed,#1269c6);border-color:transparent;color:#fff;flex:1;box-shadow:0 5px 15px #0876df2a}.mh-button-primary:hover{background:#106fd0}.mh-button-primary span{font-size:10px;margin-right:5px}
.mh-roster-heading{display:flex;justify-content:space-between;align-items:end;margin:19px 1px 9px}.mh-roster-heading h3{font-size:13px;margin:0 0 3px;font-weight:700}.mh-roster-heading span{font-size:9px;color:#91a3b0}.mh-disclosure{font-size:9px;color:#8298a8;white-space:nowrap}
.mh-roster{overflow:auto;display:grid;grid-template-columns:1fr 1fr;gap:5px;padding-right:2px;scrollbar-width:thin;scrollbar-color:#cfdee9 transparent;min-height:0;flex:1;align-content:start}.mh-worker{display:flex;align-items:center;gap:8px;text-align:left;background:#ffffff9c;border:1px solid #e4edf3;border-radius:10px;min-width:0;padding:7px 7px;cursor:pointer;color:inherit;transition:.16s}.mh-worker:hover,.mh-worker-selected{background:#fff;border-color:#9dcef2;box-shadow:0 3px 12px #1d7ec610}.mh-color-chip{flex:0 0 25px;width:25px;height:25px;border-radius:8px;background:var(--member-color);display:grid;place-items:center;color:#fff;font-size:8px;font-style:normal;font-weight:750;box-shadow:0 3px 8px color-mix(in srgb,var(--member-color),transparent 72%)}.mh-worker-info{display:block;min-width:0;flex:1}.mh-worker-info b{display:block;font-size:10px;letter-spacing:.2px}.mh-worker-info small{display:block;margin-top:3px;font-size:8px;color:#7b93a4;white-space:nowrap}.mh-worker-end{font-size:9px;color:#8ca0ae;font-variant-numeric:tabular-nums}
.mh-panel-foot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:11px;border-top:1px solid #e2ebf1;font-size:9px;color:#8197a8}.mh-route-key{display:flex;align-items:center;gap:6px}.mh-route-key i{width:15px;height:4px;border-radius:5px;background:linear-gradient(90deg,#187af0,#19a77d,#e44c8e)}
.mh-map-tools{position:absolute;right:411px;top:230px;display:grid;padding:5px;border:1px solid #ffffffc9;border-radius:13px;background:#fbfdffe8;box-shadow:0 6px 22px #254b6716;backdrop-filter:blur(14px);pointer-events:auto}.mh-map-tools button{width:37px;height:37px;border:0;border-radius:9px;background:transparent;color:#426984;font-size:19px;cursor:pointer}.mh-map-tools button:hover{background:#eaf4fb;color:#1276d7}
.mh-source{position:absolute;left:25px;bottom:18px;padding:8px 11px;border:1px solid #ffffffb8;border-radius:9px;background:#f9fcfbd9;color:#55758c;font-size:9px;box-shadow:0 4px 16px #385e7712}
.mh-origin-label{position:absolute;z-index:999;pointer-events:none;display:flex;align-items:center;gap:7px;padding:5px 9px 5px 5px;border-radius:10px;background:#ffffffed;box-shadow:0 5px 18px #163e5a2a;color:#214e6d;font-size:10px;white-space:nowrap;transform:translate(12px,-50%)}.mh-origin-label i{display:grid;place-items:center;width:24px;height:24px;border-radius:8px;background:#0b72c8;color:white;font-size:11px;font-style:normal;font-weight:800}.mh-origin-label small{display:block;margin-top:2px;color:#7c94a5;font-size:8px}.mh-origin-pin{display:flex;align-items:center;gap:4px}.mh-origin-pin span{display:grid;place-items:center;width:31px;height:31px;background:#0879dc;color:#fff;border:3px solid white;border-radius:50%;font-size:11px;font-weight:800;box-shadow:0 2px 10px #1d4d6a60}.mh-origin-pin b{padding:4px 7px;border-radius:7px;background:#102f48e8;color:white;font-size:9px;white-space:nowrap}.mh-live-pin{display:block;width:19px;height:19px;border:4px solid white;border-radius:50%;background:#ff3158;box-shadow:0 0 0 8px #ff315829,0 2px 12px #102f4866}
.mh-toast{position:absolute;left:50%;top:102px;transform:translateX(-50%);padding:11px 17px;border-radius:12px;background:#163954ed;color:white;box-shadow:0 7px 26px #173f5d35;font-size:12px;pointer-events:none}.mh-hint{position:absolute;left:50%;top:155px;transform:translateX(-50%);padding:10px 14px;border:1px solid #f1ddae;border-radius:10px;background:#fff8e8;color:#9a6d24;font-size:11px;box-shadow:0 5px 20px #5c452214;pointer-events:none}
.mh-modal{position:absolute;inset:0;display:grid;place-items:center;background:#15365038;backdrop-filter:blur(8px);pointer-events:auto;padding:20px}.mh-dialog{width:420px;max-width:100%;padding:31px;border-radius:22px;box-shadow:0 25px 90px #133b5d38}.mh-login-mark{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:#e5f2fc;color:#1475cc;font-size:15px;font-weight:800;margin-bottom:20px}.mh-dialog h2{font-size:24px;margin:8px 0}.mh-dialog p{font-size:12px;color:#7c91a2;line-height:1.8}.mh-dialog label{display:block;margin:18px 0 7px;font-size:11px;color:#628198}.mh-dialog input{width:100%;height:45px;border:1px solid #d7e4ed;border-radius:10px;padding:0 12px;font-size:15px;outline:0}.mh-dialog input:focus{border-color:#71b4eb;box-shadow:0 0 0 3px #1685ed18}.mh-dialog form .mh-button{width:100%;margin-top:12px;min-height:45px;font-size:12px}.mh-form-error{min-height:10px;margin:9px 0;color:#b3483d!important}
.mh-capture-dock{position:absolute;display:flex;align-items:center;gap:12px;bottom:24px;left:50%;transform:translateX(-50%);padding:9px 10px 9px 16px;border-radius:15px;pointer-events:auto;white-space:nowrap}.mh-capture-id{font-size:10px;color:#607f95}.mh-capture-id i{display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#0878da}.mh-capture-id b{font-size:12px;color:#214b68}.mh-capture-status{font-size:10px;color:#849bab}.mh-capture-button{border:0;border-radius:10px;background:#1479d6;color:white;padding:10px 16px;font-size:11px;font-weight:700;cursor:pointer;box-shadow:0 4px 12px #1274cf2c}.mh-capture-button.mh-capture-paused{background:#fff1dd;color:#9b6a1c;box-shadow:none}
.mh-fatal{position:fixed;z-index:2000;inset:20px 20px auto;padding:16px;text-align:center;background:#fff0e9;border:1px solid #efc5af;border-radius:14px;color:#995539;font-size:14px}
#mh-ui .mh-loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:12px 18px;border-radius:13px;background:#ffffffdc;color:#315d78;font-size:14px;box-shadow:0 8px 24px #1f49621c;pointer-events:none;transition:opacity .2s}
#mh-ui .mh-loading-error{top:auto;bottom:24px;transform:translateX(-50%);color:#995539;background:#fff0e9}
.amap-scalecontrol{color:#4f6d82!important}.amap-toolbar{z-index:500!important}.amap-logo{opacity:.75}.amap-copyright{font-size:9px!important}
@media(max-width:1050px) and (min-width:781px){.mh-header{right:392px;gap:14px}.mh-location{padding-left:13px}.mh-location span{display:none}.mh-panel{width:350px;right:14px}.mh-map-tools{right:376px}.mh-worker-info small{font-size:7px}}
@media(max-width:780px){
 .mh-header{top:max(9px,env(safe-area-inset-top));left:9px;right:9px;height:57px;padding:0 12px;border-radius:15px;gap:8px}.mh-logo{width:35px;height:35px;border-radius:11px;font-size:16px}.mh-brand{gap:8px}.mh-brand b{font-size:17px}.mh-brand small{font-size:6px;letter-spacing:1.3px}.mh-location{display:none}.mh-header-actions{gap:10px}.mh-live{font-size:8px}.mh-role-link,.mh-text{font-size:10px}
 .mh-title-block{left:17px;top:77px}.mh-kicker{font-size:7px;letter-spacing:1.5px}.mh-title-block h1{font-size:20px;margin:4px 0}.mh-title-block p{font-size:9px}
 .mh-task-switch{left:12px;top:143px;padding:5px;gap:3px;border-radius:12px}.mh-switch-caption{font-size:8px;padding:0 4px}.mh-task-tab{font-size:10px;padding:8px 9px;border-radius:8px}
 .mh-panel{top:auto;left:9px;right:9px;bottom:calc(74px + env(safe-area-inset-bottom));width:auto;height:33dvh;min-height:200px;max-height:290px;border-radius:18px;padding:13px 13px 10px}.mh-panel-heading .mh-kicker{font-size:7px}.mh-panel-heading h2{font-size:13px;margin-top:4px}.mh-complete{font-size:8px;padding:5px 8px}.mh-stats{margin:9px 0;padding:8px 4px;border-radius:10px}.mh-stats b{font-size:15px}.mh-stats span{font-size:8px}.mh-toolbar{gap:6px}.mh-button{min-height:32px;padding:6px 8px;font-size:9px;border-radius:8px}.mh-roster-heading{margin:11px 1px 6px}.mh-roster-heading h3{font-size:11px}.mh-roster-heading span,.mh-disclosure{font-size:8px}.mh-roster{gap:4px}.mh-worker{gap:6px;padding:5px;border-radius:8px}.mh-color-chip{flex-basis:20px;width:20px;height:20px;border-radius:6px;font-size:7px}.mh-worker-info b{font-size:8px}.mh-worker-info small{font-size:7px;margin-top:2px}.mh-worker-end{font-size:8px}.mh-panel-foot{font-size:8px;margin-top:7px;padding-top:7px}
 .mh-map-tools{right:12px;top:147px;padding:3px;border-radius:10px}.mh-map-tools button{width:31px;height:31px;font-size:16px}.mh-source{left:12px;bottom:calc(33dvh + 83px);font-size:7px;padding:6px 8px;max-width:calc(100% - 72px)}.mh-origin-label{font-size:8px;padding:4px 6px 4px 4px}.mh-origin-label i{width:20px;height:20px;font-size:9px}.mh-origin-label small{font-size:7px}
 .mh-capture-dock{left:9px;right:9px;bottom:max(9px,env(safe-area-inset-bottom));transform:none;padding:7px 8px 7px 12px;border-radius:13px;gap:8px;justify-content:space-between}.mh-capture-id{font-size:8px}.mh-capture-id b{font-size:10px}.mh-capture-status{font-size:8px}.mh-capture-button{padding:10px 12px;font-size:10px;border-radius:9px}.mh-toast{top:71px;font-size:10px;padding:9px 13px;max-width:90vw;text-align:center}.mh-hint{top:111px;font-size:9px;max-width:90vw;text-align:center}.mh-admin .mh-panel{bottom:11px;height:46dvh;min-height:240px;max-height:none}.mh-admin .mh-source{bottom:calc(46dvh + 20px)}.mh-admin .mh-roster{grid-template-columns:1fr 1fr}
 .mh-modal{padding:14px}.mh-dialog{padding:24px;border-radius:18px}.mh-dialog h2{font-size:21px}
}
.mh-current-location-pin{position:relative;display:grid;place-items:center;width:30px;height:30px;border:2px solid #fff;border-radius:50%;background:#1484ed;box-shadow:0 2px 9px #124c7a70}
.mh-current-location-pin::before{position:absolute;inset:-8px;border:2px solid #1484ed;border-radius:50%;background:#1484ed24;content:"";animation:mh-location-pulse 1.8s ease-out infinite}
.mh-current-location-pin i{position:relative;width:8px;height:8px;border-radius:50%;background:#fff}
.mh-live-worker-pin{display:block;width:15px;height:15px;border:3px solid #fff;border-radius:50%;background:var(--worker-color);box-shadow:0 0 0 5px color-mix(in srgb,var(--worker-color) 28%,transparent),0 2px 8px #102f4860}
@keyframes mh-location-pulse{0%{transform:scale(.65);opacity:.8}100%{transform:scale(1.3);opacity:0}}
@media(prefers-reduced-motion:reduce){.mh-current-location-pin::before{animation:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
.mh-task-list{display:flex;gap:6px;max-width:min(680px,62vw);overflow:auto;scrollbar-width:thin}.mh-task-list .mh-task-row{width:auto;min-width:210px}.mh-task-row{display:flex;align-items:center;justify-content:space-between;gap:9px;min-height:48px;padding:8px 10px;border:1px solid #e1ebf2;border-radius:11px;background:#ffffffbd;color:#264f6c;text-align:left;cursor:pointer;transition:.16s}.mh-task-row:hover,.mh-task-row-active{background:#fff;border-color:#98c8ea;box-shadow:0 4px 14px #1d7ec610}.mh-task-row>span{display:block;min-width:0}.mh-task-row b{display:block;font-size:11px;white-space:nowrap}.mh-task-row small{display:block;margin-top:4px;color:#8096a7;font-size:9px;white-space:nowrap}.mh-task-badge{flex:none;padding:4px 7px;border-radius:20px;font-size:9px;font-style:normal;white-space:nowrap}.mh-status-done{color:#13836c;background:#e7f6f1}.mh-status-open{color:#98691d;background:#fff3dc}.mh-history-section{display:flex;flex-direction:column;min-height:0;max-height:42%;margin-top:5px}.mh-history-section .mh-roster{flex:1}.mh-empty{grid-column:1/-1;padding:14px;border:1px dashed #d8e5ee;border-radius:10px;color:#8297a7;font-size:11px;line-height:1.7}.mh-member-toggle{flex:none;border:1px solid #dbe7ef;border-radius:8px;padding:6px 8px;background:#fff;color:#50738b;font-size:10px;cursor:pointer}.mh-member-inactive{color:#14816a;background:#eaf7f3}.mh-dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:15px}.mh-dialog .mh-dialog-actions .mh-button{width:auto;margin-top:0}.mh-dialog .mh-dialog-actions .mh-button-primary{flex:1}.mh-button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:780px){.mh-task-switch{right:8px;align-items:flex-start;max-width:calc(100vw - 16px);flex-wrap:wrap}.mh-task-list{max-width:calc(100vw - 32px);width:100%;max-height:18dvh;overflow:auto;flex-wrap:nowrap}.mh-task-switch>.mh-task-row{min-width:190px}.mh-task-switch>.mh-button{min-height:30px}.mh-collector .mh-panel{height:43dvh;max-height:380px;bottom:calc(76px + env(safe-area-inset-bottom))}.mh-collector .mh-panel-foot{margin-top:5px}.mh-collector .mh-source{bottom:calc(43dvh + 84px)}.mh-history-section{max-height:40%}.mh-admin .mh-history-section{max-height:36%}.mh-admin .mh-task-list{max-width:calc(100vw - 32px)}}

/* 让信息卡片的空白区域透传拖拽，交互控件仍可点击和滚动。 */
.mh-header,.mh-panel,.mh-task-switch,.mh-capture-dock{pointer-events:none}
.mh-task-list,.mh-panel .mh-roster,.mh-panel form,.mh-panel input,.mh-panel button{pointer-events:auto}
.mh-dialog select{width:100%;height:45px;border:1px solid #d7e4ed;border-radius:10px;padding:0 12px;background:#fff;color:var(--mh-ink);font:inherit;font-size:15px}
@media(max-width:780px){
 .mh-header-actions{gap:8px}.mh-live{font-size:10px}.mh-role-link,.mh-text{font-size:12px;padding:7px 5px}
 .mh-panel-heading h2{font-size:16px}.mh-panel .mh-complete{font-size:10px}.mh-panel .mh-stats b{font-size:17px}.mh-panel .mh-stats span{font-size:10px}
 .mh-panel .mh-button{min-height:38px;font-size:11px}.mh-panel .mh-roster-heading h3{font-size:13px}.mh-panel .mh-roster-heading span,.mh-panel .mh-disclosure{font-size:10px}
 .mh-panel .mh-worker-info b{font-size:11px}.mh-panel .mh-worker-info small{font-size:9px}.mh-panel .mh-worker-end{font-size:10px}.mh-panel .mh-panel-foot{font-size:10px}
 .mh-capture-dock #mh-stop-capture{min-height:36px;padding:7px 8px;font-size:10px}
 .mh-capture-dock .mh-capture-button{padding:9px 10px;font-size:10px}
}
@media(max-width:780px){
 .mh-panel{height:28dvh;min-height:205px;max-height:245px;bottom:calc(70px + env(safe-area-inset-bottom));padding:11px 12px 8px}
 .mh-collector .mh-panel{height:30dvh;min-height:215px;max-height:255px;bottom:calc(72px + env(safe-area-inset-bottom))}
 .mh-admin .mh-panel{height:35dvh;min-height:230px;max-height:295px;bottom:9px}
 .mh-panel .mh-stats{margin:7px 0;padding:7px 4px}
 .mh-panel .mh-roster-heading{margin:8px 1px 5px}
 .mh-panel .mh-empty{padding:9px;font-size:10px;line-height:1.55}
 .mh-panel .mh-panel-foot{margin-top:5px;padding-top:5px}
}
