:root{color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;--bg:#03111d;--panel:#071c2a;--line:#176080;--cyan:#55dfff;--blue:#6fa8ff;--green:#8ef8bd;--red:#ff5b65;--amber:#ffbc55;--text:#e8f7ff;--muted:#7ea6b7}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 55% 25%,#0a3550 0,#03111d 52%,#020a11 100%);color:var(--text);min-height:100vh}
.shell{padding:18px;max-width:1800px;margin:auto}header{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid #15506c;padding:4px 6px 15px;margin-bottom:14px}
h1{margin:2px 0;font-size:30px;letter-spacing:.03em}h1 span{color:var(--cyan);font-size:18px}h2{margin:3px 0;font-size:18px}p{color:#93b6c5;margin:4px 0}.eyebrow{font-size:11px;color:#69bad6;letter-spacing:.16em}
.status{display:flex;gap:8px}.status span,.chips span,.tag{border:1px solid #24536a;border-radius:999px;padding:7px 10px;font-size:12px}.status .on{color:#94f4cf;border-color:#266e5a}.status .off{color:#ff9ba3;border-color:#71313a}
.card{background:linear-gradient(180deg,#0a2333e8,#061722ed);border:1px solid #176080;border-radius:16px;box-shadow:0 15px 50px #0006,inset 0 0 30px #0c49642b}
.auth{max-width:680px;margin:12vh auto;padding:22px}.authgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:15px 0}label{color:#9fc2cf;font-size:13px}input{display:block;width:100%;margin-top:7px;background:#04131d;border:1px solid #1b556b;color:white;border-radius:9px;padding:12px;font-size:15px}
button{background:#23c4e8;color:#00131c;border:0;border-radius:9px;padding:10px 14px;font-weight:750;cursor:pointer}.ghost{background:#0a2a3a;color:#b8eaff;border:1px solid #1f6077}.msg{margin-top:10px;color:#ff9aa6}
main{display:grid;grid-template-columns:310px minmax(620px,1fr) 350px;gap:12px;min-height:720px}.left,.right,.map{padding:14px}.panelhead{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #17495e;padding-bottom:10px}.chips{display:flex;gap:6px;margin:10px 0;flex-wrap:wrap}.faultlist{max-height:625px;overflow:auto;padding-right:4px}
.fault{padding:11px;border:1px solid #143d50;border-radius:11px;margin-bottom:8px;background:#061723;cursor:pointer}.fault:hover,.fault.selected{border-color:#35bedf;box-shadow:0 0 20px #26bed52b}.fault .top{display:flex;justify-content:space-between;gap:8px}.fault b{font-size:13px}.fault .sub{font-size:12px;color:var(--muted);margin-top:5px}.p-high{color:var(--red)}.p-medium{color:var(--amber)}.p-low{color:#8fc7ff}
.legend{font-size:11px;color:#8db8c8;display:flex;gap:12px;flex-wrap:wrap}.legend i{display:inline-block;width:22px;height:3px;vertical-align:middle;margin-right:5px}.legend .ns{background:#9cff9c}.legend .ew{background:#59b9ff}
.mapcanvas{position:relative;height:620px;margin-top:10px;background:radial-gradient(circle at center,#0b3450 0,#041520 70%);border:1px solid #0f4157;border-radius:12px;overflow:hidden}.mapcanvas svg{width:100%;height:100%;display:block}.emptyhint{position:absolute;inset:45% 15%;text-align:center;color:#7ea7b7}.routehint{margin-top:9px;padding:10px;border:1px dashed #256179;border-radius:9px;color:#9fd5e6;font-size:13px}
.assistant.empty{color:#6e97a8;padding:22px 4px}.device-title{font-size:21px;font-weight:800;color:#ffe09a;margin:15px 0}.rows{border-top:1px solid #183e50}.row{display:grid;grid-template-columns:115px 1fr;gap:8px;padding:9px 0;border-bottom:1px solid #123546;font-size:13px}.row span:first-child{color:#779eae}.faultstatus{color:#ff7f86}.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.actions button{font-size:13px}.tag.high{color:#ff8d95;border-color:#7b3540}.tag.medium{color:#ffd08a;border-color:#74552b}.tag.low{color:#9ccfff;border-color:#30587b}
.pin{cursor:pointer}.pin circle.outer{fill:#061724;stroke-width:3}.pin.high circle.outer{stroke:#ff626b}.pin.medium circle.outer{stroke:#ffb84a}.pin.low circle.outer{stroke:#67adff}.pin.selected circle.outer{stroke:#fff1a6;filter:url(#glow)}.pin text{fill:#e9fbff;font-size:13px;font-weight:700}.route-label{fill:#d9f7ff;font-size:13px;font-weight:800}.interchange circle{fill:#061a25;stroke:#8eddf7;stroke-width:2}.interchange text{fill:#75a9bb;font-size:9px}
footer{text-align:center;color:#4e7a8c;font-size:10px;letter-spacing:.12em;padding:14px}
@media(max-width:1200px){main{grid-template-columns:260px minmax(520px,1fr)}.right{grid-column:1/-1}.mapcanvas{height:560px}}
@media(max-width:780px){.shell{padding:8px}header{display:block}main{display:block}.left,.map,.right{margin-bottom:10px}.mapcanvas{height:500px}.authgrid{grid-template-columns:1fr}.legend{display:none}}
.shoulder-warning{margin-top:13px;padding:12px;border:1px solid #bb8138;background:#3b2a0fd9;border-radius:10px;color:#ffd99b;font-size:12px;line-height:1.55}
.shoulder-warning b{display:block;margin-bottom:5px;color:#ffbe55}
.safety-warning{margin-top:12px;padding:11px;border-left:4px solid #ff8b45;background:#321a12c7;border-radius:8px;color:#ffc39f;font-size:12px;line-height:1.55}
.actions.four{grid-template-columns:1fr 1fr}

/* V7.1.2 Multi-Vendor Filter */
.vendor-filter{margin:10px 0 11px;padding:10px;background:#061620;border:1px solid #17495e;border-radius:11px}
.vendor-filter-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.vendor-filter-head b{font-size:13px;color:#d8f5ff}
button.tiny{padding:6px 10px;font-size:11px}
button:disabled{opacity:.42;cursor:not-allowed}
.vendor-chips{display:flex;flex-wrap:wrap;gap:6px;max-height:98px;overflow:auto;padding:1px}
.vendor-chip{display:flex;align-items:center;gap:6px;background:#0a2735;color:#a9d6e5;border:1px solid #24536a;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:700}
.vendor-chip b{min-width:18px;text-align:center;border-radius:999px;background:#061620;color:#77b7cd;padding:2px 5px;font-size:10px}
.vendor-chip.active{background:#123b3d;color:#aaffdc;border-color:#52d9b0;box-shadow:0 0 16px #31e6ae24}
.vendor-chip.active b{background:#0a2926;color:#8ff4cf}
.vendor-filter-info{margin-top:7px;font-size:10px;color:#668d9d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vendor-sub{margin-top:5px;color:#7fc3d6;font-size:10px}

/* V7.1.2 Map Label Collision */
.pin-leader{stroke:#65a9c0;stroke-width:1;opacity:.52;pointer-events:none}
.pin-label{fill:#e9fbff;font-size:12px;font-weight:750;paint-order:stroke;stroke:#03111d;stroke-width:3px;stroke-linejoin:round;pointer-events:none}
.pin:not(.selected){opacity:.92}
.pin.selected{opacity:1}
.pin.selected .pin-leader{stroke:#fff0a6;opacity:.9;stroke-width:1.6}
.pin.selected .pin-label{fill:#fff0a6;font-size:13px}

/* V7.2 Field Work Bridge */
.wr-modal{position:fixed;inset:0;z-index:1000;background:#01070dcc;backdrop-filter:blur(7px);padding:18px;overflow:auto}
.wr-dialog{max-width:720px;margin:3vh auto;background:linear-gradient(180deg,#0a2637,#061722);border:1px solid #2580a3;border-radius:16px;box-shadow:0 24px 90px #000b;padding:16px}
.wr-head{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #17495e;padding-bottom:10px;margin-bottom:10px}
.wr-equipment{display:flex;gap:9px;flex-wrap:wrap;padding:10px;border:1px solid #1c5267;background:#06141e;border-radius:9px;margin-bottom:12px;font-size:12px;color:#a8d7e7}.wr-equipment b{color:#ffe09a}
.wr-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.wr-dialog label{display:block;margin:9px 0;color:#9fc2cf;font-size:12px}
.wr-dialog textarea,.wr-dialog select{display:block;width:100%;margin-top:6px;background:#04131d;border:1px solid #1b556b;color:white;border-radius:9px;padding:10px;font:inherit;resize:vertical}
.wr-dialog select{height:42px}
.wr-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px}
.wr-msg{min-height:24px;margin-top:10px;color:#9ee6c9;font-size:12px}.wr-msg b{color:#aaffda}
@media(max-width:620px){.wr-modal{padding:7px}.wr-dialog{margin:1vh auto}.wr-grid{grid-template-columns:1fr}}

/* V7.3.4 SSO navigation */
.home-btn{padding:7px 10px!important;font-size:11px!important}
.fault-remember{display:flex;align-items:center;gap:8px;margin:12px 0;color:#9fc2cf;font-size:12px}
.fault-remember input{width:17px;height:17px;margin:0;accent-color:#23c4e8}

/* ==========================================================
   NIMUE_REAL_INTERACTIVE_MAP_V715
   ========================================================== */
.map-mode-switch{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:auto}
.map-mode-btn{background:#0a2a3a;color:#a9d6e5;border:1px solid #24536a;border-radius:999px;padding:7px 11px;font-size:11px}
.map-mode-btn.active{background:#123b3d;color:#aaffdc;border-color:#52d9b0;box-shadow:0 0 16px #31e6ae24}
.map-layer-filter{margin:10px 0 11px;padding:10px;background:#061620;border:1px solid #17495e;border-radius:11px}
.layer-filter-row{display:grid;grid-template-columns:42px 1fr;gap:7px;align-items:start;margin-top:7px}
.layer-filter-label{padding-top:6px;color:#6da1b3;font-size:10px;font-weight:800}
.layer-filter-chips{display:flex;flex-wrap:wrap;gap:5px;max-height:78px;overflow:auto}
.map-filter-chip{display:flex;align-items:center;gap:5px;background:#0a2735;color:#a9d6e5;border:1px solid #24536a;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:700}
.map-filter-chip b{min-width:17px;text-align:center;border-radius:999px;background:#061620;color:#77b7cd;padding:2px 4px;font-size:9px}
.map-filter-chip.active{background:#182f4b;color:#b6d7ff;border-color:#6fa8ff;box-shadow:0 0 14px #6fa8ff22}
.map-filter-chip.active b{background:#0c2238;color:#a9caff}
.realmap{position:absolute;inset:0;z-index:2;background:#dce7e9}
.realmap-status{position:absolute;left:10px;top:10px;z-index:500;max-width:70%;padding:7px 10px;border-radius:999px;background:#03111ddd;border:1px solid #1d6178;color:#b9eaff;font-size:10px;box-shadow:0 5px 20px #0006;pointer-events:none}
.realmap .leaflet-control-zoom a{background:#061923;color:#dff8ff;border-color:#1b556b}
.realmap .leaflet-control-attribution{background:#ffffffdf;color:#344}
.realmap .leaflet-control-attribution a{color:#176080}
.nimue-real-icon-wrap{background:transparent;border:0}
.nimue-real-marker{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#061724;border:3px solid #ffb84a;box-shadow:0 0 0 4px #03111d99,0 0 16px #ffb84a88}
.nimue-real-marker span{width:7px;height:7px;border-radius:50%;background:#fff}
.nimue-real-marker.high{border-color:#ff626b;box-shadow:0 0 0 4px #03111d99,0 0 18px #ff626b99}
.nimue-real-marker.low{border-color:#67adff;box-shadow:0 0 0 4px #03111d99,0 0 16px #67adff88}
.nimue-real-marker.selected{border-color:#fff1a6;transform:scale(1.18);box-shadow:0 0 0 5px #03111dcc,0 0 24px #fff1a6}
.nimue-real-tooltip{background:#061724;color:#e9fbff;border:1px solid #2580a3;box-shadow:0 8px 24px #0008;font-size:11px;font-weight:750}
.nimue-real-tooltip:before{border-top-color:#2580a3!important}
@media(max-width:780px){
 .map-mode-switch{margin-top:8px;width:100%}
 .map-mode-btn{flex:1}
 .realmap-status{max-width:88%;font-size:9px}
 .layer-filter-row{grid-template-columns:36px 1fr}
}

/* NIMUE_LOCAL_MAP_RUNTIME_V7151 */
.nimue-localmap-runtime{overflow:hidden;touch-action:none;cursor:grab;background:#dce7e9}
.nimue-localmap-runtime.dragging{cursor:grabbing}
.nimue-localmap-tiles,.nimue-localmap-markers{position:absolute;inset:0;overflow:hidden}
.nimue-localmap-tiles{z-index:1;background:#dce7e9}
.nimue-localmap-markers{z-index:10;pointer-events:none}
.nimue-localmap-tile{position:absolute;width:256px;height:256px;max-width:none;user-select:none;pointer-events:none}
.nimue-localmap-markers>div{pointer-events:auto;transform:translate(-50%,-50%)}
.nimue-local-tooltip{position:absolute;left:50%;bottom:29px;transform:translateX(-50%);white-space:nowrap;padding:5px 8px;border-radius:7px;background:#061724;color:#e9fbff;border:1px solid #2580a3;box-shadow:0 8px 24px #0008;font-size:11px;font-weight:750;pointer-events:none}
.nimue-local-tooltip:after{content:"";position:absolute;left:50%;top:100%;margin-left:-5px;border:5px solid transparent;border-top-color:#2580a3}
.nimue-localmap-controls{position:absolute;z-index:200;left:10px;bottom:34px;display:grid;border:1px solid #24536a;border-radius:8px;overflow:hidden;box-shadow:0 4px 16px #0005}
.nimue-localmap-controls button{width:34px;height:32px;border:0;border-bottom:1px solid #24536a;background:#061923;color:#dff8ff;font-size:20px;line-height:1;cursor:pointer}
.nimue-localmap-controls button:last-child{border-bottom:0}
.nimue-localmap-controls button:hover{background:#0e3445}
.nimue-localmap-attribution{position:absolute;z-index:200;right:4px;bottom:3px;padding:2px 5px;background:#ffffffdc;color:#344;font-size:9px;border-radius:3px}
.nimue-localmap-attribution a{color:#176080}

/* NIMUE_CUSTOM_DEVICE_MARKERS_V716 */
.nimue-real-icon-wrap{background:transparent!important;border:0!important;overflow:visible!important}
.nimue-device-pin{position:relative;width:36px;height:44px;transform-origin:50% 90%;transition:transform .14s ease,filter .14s ease;filter:drop-shadow(0 5px 6px rgba(0,17,29,.55));cursor:pointer}
.nimue-device-pin__head{position:absolute;left:3px;top:2px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--pin-color,#78909c);border:3px solid #9aa8b2;box-sizing:border-box;box-shadow:0 0 0 2px rgba(3,17,29,.90);z-index:2}
.nimue-device-pin__tip{position:absolute;left:13px;top:26px;width:10px;height:10px;background:var(--pin-color,#78909c);transform:rotate(45deg);border-right:3px solid #9aa8b2;border-bottom:3px solid #9aa8b2;box-sizing:border-box;z-index:1}
.nimue-device-pin svg{width:18px;height:18px;display:block;fill:#fff;stroke:none}.nimue-device-pin svg .pin-cut{fill:var(--pin-color,#78909c)}
.nimue-device-pin svg .pin-stroke{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.nimue-device-pin svg .pin-stroke.dark{stroke:#3d3a20}
.nimue-device-pin.status-fault .nimue-device-pin__head{border-color:#ff4d5a;box-shadow:0 0 0 2px rgba(3,17,29,.95),0 0 15px rgba(255,77,90,.72)}
.nimue-device-pin.status-fault .nimue-device-pin__tip{border-right-color:#ff4d5a;border-bottom-color:#ff4d5a}
.nimue-device-pin.status-warning .nimue-device-pin__head{border-color:#ffad42;box-shadow:0 0 0 2px rgba(3,17,29,.95),0 0 13px rgba(255,173,66,.60)}
.nimue-device-pin.status-warning .nimue-device-pin__tip{border-right-color:#ffad42;border-bottom-color:#ffad42}
.nimue-device-pin.status-normal .nimue-device-pin__head{border-color:#5ed49a;box-shadow:0 0 0 2px rgba(3,17,29,.95),0 0 11px rgba(94,212,154,.46)}
.nimue-device-pin.status-normal .nimue-device-pin__tip{border-right-color:#5ed49a;border-bottom-color:#5ed49a}
.nimue-device-pin.status-unknown .nimue-device-pin__head{border-color:#9aa8b2}.nimue-device-pin.status-unknown .nimue-device-pin__tip{border-right-color:#9aa8b2;border-bottom-color:#9aa8b2}
.nimue-device-pin.is-selected{transform:scale(1.24);filter:drop-shadow(0 7px 10px rgba(0,17,29,.85));z-index:9}
.nimue-device-pin.is-selected .nimue-device-pin__head{border-color:#fff5b5;box-shadow:0 0 0 4px rgba(3,17,29,.96),0 0 23px rgba(255,242,148,.95)}
.nimue-device-pin.is-selected .nimue-device-pin__tip{border-right-color:#fff5b5;border-bottom-color:#fff5b5}
.nimue-device-pin[data-device-type="FA"] svg{fill:#433d1d}.nimue-localmap-markers>div{overflow:visible!important}

