*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:IBM Plex Mono,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media (width>=640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (width>=768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (width>=1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (width>=1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (width>=1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.inline{display:inline}.table{display:table}.grid{display:grid}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.rounded{border-radius:.25rem}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{color:#222;background:#e9e9e9;font-family:Malgun Gothic,Apple SD Gothic Neo,Noto Sans KR,sans-serif}*{box-sizing:border-box}body{background:#e9e9e9;min-width:0;min-height:100vh;margin:0;font-size:13px}button,input,select{font:inherit}.admin-shell{min-width:0;min-height:100vh;display:flex}.auth-shell{background:radial-gradient(circle at 18% 12%,#496d8929,#0000 34%),linear-gradient(145deg,#eef1f3 0%,#dfe4e8 100%);place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{background:#fff;border:1px solid #c3cbd2;border-radius:14px;width:min(100%,420px);padding:30px;box-shadow:0 22px 60px #1b232b26}.auth-brand{align-items:center;gap:12px;display:flex}.auth-brand-mark{color:#fff;background:#26323c;border-radius:11px;place-items:center;width:44px;height:44px;font-size:15px;font-weight:800;display:grid}.auth-brand strong,.auth-brand small{display:block}.auth-brand strong{color:#26323c;letter-spacing:.08em;font-size:15px}.auth-brand small{color:#74808a;letter-spacing:.12em;margin-top:3px;font-size:10px}.auth-heading{margin-top:32px}.auth-heading h1{color:#1f2933;margin:0;font-size:24px}.auth-heading p{color:#68737d;margin:8px 0 0;font-size:13px}.auth-form{gap:16px;margin-top:26px;display:grid}.auth-form label{gap:7px;display:grid}.auth-form label span{color:#3e4851;font-size:12px;font-weight:700}.auth-form input{color:#1f2933;background:#fff;border:1px solid #b8c1c8;border-radius:8px;outline:none;width:100%;height:44px;padding:0 12px;transition:border-color .15s,box-shadow .15s}.auth-form input:focus{border-color:#4f6474;box-shadow:0 0 0 3px #4f647424}.auth-submit{color:#fff;cursor:pointer;background:#26323c;border:1px solid #1f2933;border-radius:8px;height:44px;font-weight:800}.auth-submit:hover:not(:disabled){background:#182129}.auth-submit:disabled{opacity:.55;cursor:not-allowed}.auth-error{color:#9f251b;background:#fff4f2;border:1px solid #efb4ad;border-radius:7px;justify-content:space-between;align-items:center;gap:10px;padding:10px 11px;font-size:12px;display:flex}.auth-error button{color:inherit;cursor:pointer;background:0 0;border:0;flex:none;text-decoration:underline}.auth-security{color:#7b858e;text-align:center;margin:20px 0 0;font-size:11px}.auth-loading{color:#34414b;align-items:center;gap:12px;display:flex}.auth-spinner{border:2px solid #bcc6cd;border-top-color:#34414b;border-radius:50%;width:22px;height:22px;animation:.75s linear infinite auth-spin}@keyframes auth-spin{to{transform:rotate(360deg)}}.lnb{color:#fff;background:#2f343a;border-right:1px solid #1d2024;flex:0 0 230px;width:230px}.lnb-title{background:#252a30;border-bottom:1px solid #202429;padding:18px 16px}.lnb-title strong{letter-spacing:.04em;font-size:18px;display:block}.lnb-title span{color:#aeb4bd;margin-top:4px;font-size:11px;display:block}.select,.input,.api-input{color:#222;background:#fff;border:1px solid #b7b7b7;outline:none;width:100%;height:32px;padding:0 8px}.select.small{width:180px}.lnb-menu{padding:14px 0}.lnb-menu-group{margin-bottom:16px}.lnb-menu-group>span{color:#89939e;letter-spacing:.12em;padding:0 16px 7px;font-size:10px;font-weight:800;display:block}.lnb-menu-item{color:#d5d9df;text-align:left;cursor:pointer;background:0 0;border:0;border-left:4px solid #0000;width:100%;height:38px;padding:0 16px;display:block}.lnb-menu-item:hover,.lnb-menu-item.active{color:#fff;background:#182129;border-left-color:#70e0b1;font-weight:700}.lnb-status{background:#262b31;border:1px solid #444b54;margin:12px}.lnb-status div{border-bottom:1px solid #444b54;justify-content:space-between;padding:9px 10px;display:flex}.lnb-status div:last-child{border-bottom:0}.lnb-status span{color:#b8bec7}.admin-main{flex:1;min-width:0}.topbar{background:#fff;border-bottom:1px solid #c6c6c6;justify-content:space-between;align-items:center;height:64px;padding:0 18px;display:flex}.topbar h1{margin:0;font-size:20px}.topbar p{color:#666;margin:4px 0 0}.topbar-actions{align-items:center;gap:6px;display:flex}.admin-user{color:#505b64;text-align:center;min-width:64px;font-weight:700}.api-input{width:280px}.btn{color:#222;cursor:pointer;background:#f5f5f5;border:1px solid #777;height:32px;padding:0 12px}.btn.primary{color:#fff;background:#374151;border-color:#1f2937}.btn.danger{color:#fff;background:#b42318;border-color:#86190f}.btn:disabled{opacity:.6;cursor:not-allowed}.error-box{color:#b42318;background:#fff4f2;border:1px solid #b42318;margin:12px 18px 0;padding:10px 12px}.content{min-width:0;padding:18px}.dashboard-grid{gap:14px;display:grid}.overview-grid{gap:16px}.overview-hero{color:#fff;background:radial-gradient(circle at 82% 10%,#70e0b133,#0000 30%),linear-gradient(135deg,#17232b 0%,#253942 100%);border-color:#273640;justify-content:space-between;align-items:flex-end;gap:24px;padding:28px;display:flex}.overview-hero .eyebrow{color:#70e0b1;letter-spacing:.15em;font-size:10px;font-weight:800;display:block}.overview-hero h2{letter-spacing:-.04em;margin:9px 0 0;font-size:24px}.overview-hero p{color:#c8d3d8;margin:8px 0 0}.overview-hero-actions{flex:none;align-items:center;gap:10px;display:flex}.overview-updated{color:#d8e2e5;font-size:12px}.overview-updated.loading:before{content:"";background:#70e0b1;border-radius:50%;width:7px;height:7px;margin-right:6px;animation:.8s ease-in-out infinite alternate admin-pulse;display:inline-block}@keyframes admin-pulse{to{opacity:.25;transform:scale(.75)}}.overview-status-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.overview-status-card{color:#182129;text-align:left;cursor:pointer;background:#fff;border:1px solid #d7dee1;border-radius:11px;min-height:148px;padding:18px;transition:transform .15s,box-shadow .15s,border-color .15s;position:relative;overflow:hidden}.overview-status-card:hover{border-color:#82a4a0;transform:translateY(-2px);box-shadow:0 10px 20px #17232b17}.overview-status-card>span,.overview-status-card small,.overview-status-card em{display:block}.overview-status-card>span{color:#667681;font-size:12px;font-weight:700}.overview-status-card strong{letter-spacing:-.04em;margin:12px 0 7px;font-size:23px;display:block}.overview-status-card em{border-radius:99px;width:fit-content;padding:3px 7px;font-size:10px;font-style:normal;font-weight:800}.overview-status-card em.ok{color:#147849;background:#e5f7ee}.overview-status-card em.warn{color:#9a6500;background:#fff4d7}.overview-status-card em.danger{color:#b42318;background:#ffebe9}.overview-status-card small{color:#71808a;margin-top:10px;font-size:11px;line-height:1.45}.overview-action-panel{padding-bottom:14px}.overview-action-list{gap:7px;margin-top:14px;display:grid}.overview-action{color:#26323c;text-align:left;cursor:pointer;background:#fff;border:1px solid #e0e5e7;border-radius:8px;align-items:center;gap:11px;width:100%;padding:12px 13px;display:flex}.overview-action:hover{background:#f8fbfa}.overview-action>span{border-radius:50%;flex:0 0 20px;place-items:center;width:20px;height:20px;font-weight:900;display:grid}.overview-action.danger>span{color:#b42318;background:#ffe9e6}.overview-action.warning>span{color:#986000;background:#fff1ce}.overview-action.info>span{color:#185ca8;background:#e8f2ff}.overview-action div{flex:1;min-width:0}.overview-action strong,.overview-action small{display:block}.overview-action small{color:#6d7a83;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;overflow:hidden}.overview-action>b{color:#53626c;font-size:11px}.empty-box.success{color:#27764b;background:#f1fbf5;border-color:#bce3ce}.realtime-status-hero{background:linear-gradient(110deg,#fbfffd,#eef8f3);border-color:#d1ded9;align-items:center;gap:22px;display:flex}.realtime-status-hero>div:first-child{min-width:180px}.realtime-status-hero>div:first-child>strong{color:#203e35;margin-left:7px;font-size:20px}.realtime-status-hero small{color:#668076;margin-top:6px;display:block}.live-dot{background:#1fa66a;border-radius:50%;width:9px;height:9px;display:inline-block;box-shadow:0 0 0 4px #1fa66a1f}.live-dot.warning{background:#d88a00;box-shadow:0 0 0 4px #d88a001f}.realtime-hero-metrics{flex:1;grid-template-columns:repeat(3,minmax(110px,1fr));gap:0;display:grid}.realtime-hero-metrics .detail-row{border-left:1px solid #d8e5df;flex-direction:column;min-width:0;padding:4px 16px;display:flex}.realtime-hero-metrics .detail-row strong{color:#203e35;white-space:nowrap;margin-top:4px;font-size:17px}.realtime-hero-metrics .detail-row:first-child{border-left:0}.realtime-attention-list{gap:7px;margin-top:14px;display:grid}.realtime-attention-row{background:#fffaf8;border:1px solid #f0d4cb;border-radius:8px;grid-template-columns:minmax(0,1fr) 70px 165px 90px;align-items:center;gap:12px;padding:12px;display:grid}.realtime-attention-row.fresh{background:#f7fcf9;border-color:#cce4d8}.realtime-attention-row strong,.realtime-attention-row small{display:block}.realtime-attention-row small{color:#81665c;margin-top:3px}.realtime-attention-row>span{color:#5f686e;font-variant-numeric:tabular-nums}.realtime-age{font-weight:800;color:#b42318!important}.realtime-age.fresh{color:#16734d!important}.realtime-freshness{border-radius:99px;padding:3px 7px;font-size:11px;font-weight:800;display:inline-block}.realtime-freshness.fresh{color:#147849;background:#e5f7ee}.realtime-freshness.stale{color:#b42318;background:#ffebe9}.realtime-freshness.stale_snapshot{color:#986000;background:#fff1ce}.realtime-freshness.no_data{color:#65727b;background:#f0f2f3}.realtime-stale-snapshot{color:#744d00;background:#fffaf0;border-color:#f0d4aa;gap:5px;display:grid}.realtime-stale-snapshot strong{font-size:14px}.realtime-stale-snapshot span{color:#8e6a22}.master-workspace,.schematic-editor{gap:14px;display:grid}.schematic-tool-label{color:#56656d;font-size:11px;font-weight:800}.btn.active-tool{color:#19553f;background:#e5f5ed;border-color:#277357;font-weight:800}.schematic-editor-body{background:#fff;border:1px solid #ccd7d8;border-radius:10px;grid-template-columns:minmax(0,1fr) 270px;min-height:680px;display:grid;overflow:hidden}.schematic-canvas-wrap{background:#f7faf9;min-width:0;overflow:auto}.schematic-canvas{-webkit-user-select:none;user-select:none;width:100%;min-width:900px;height:auto;display:block}.schematic-grid line{stroke:#e9eeee;stroke-width:1px}.schematic-line-hit{fill:none;stroke:#0000;stroke-width:26px;cursor:pointer}.schematic-line{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:8px;opacity:.96;pointer-events:none}.schematic-route.selected .schematic-line{stroke-width:10px;filter:drop-shadow(0 0 3px #1f44364d)}.schematic-bend{fill:#fff;stroke:#155c40;stroke-width:3px;cursor:move}.schematic-bend.selected{fill:#155c40;stroke:#fff}.schematic-node{cursor:grab}.schematic-node:active{cursor:grabbing}.schematic-node circle{fill:#fff;stroke:#26343b;stroke-width:3px}.schematic-node.selected circle{r:9;fill:#26343b;stroke:#fff;stroke-width:4px}.schematic-node text{fill:#1b2429;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round;pointer-events:none;font-size:13px;font-weight:700}.schematic-inspector{background:#fff;border-left:1px solid #d9e1e1;padding:18px}.schematic-inspector h3{color:#263840;margin:0 0 14px;font-size:15px}.schematic-inspector p{color:#748189;margin:14px 0 0;font-size:11px;line-height:1.5}.schematic-station-search{gap:7px;margin-top:16px;display:grid}.schematic-station-search>span{color:#55656f;font-size:11px;font-weight:800}.schematic-suggestions{border:1px solid #d8e0e1;border-radius:7px;margin-top:8px;display:grid;overflow:hidden}.schematic-suggestions button{color:#26343b;text-align:left;cursor:pointer;background:#fff;border:0;border-top:1px solid #e9eeee;justify-content:space-between;gap:8px;padding:9px;display:flex}.schematic-suggestions button:first-child{border-top:0}.schematic-suggestions button:hover{background:#eff8f4}.schematic-suggestions span{color:#75838b;font-size:10px}.schematic-suggestions small{color:#75838b;padding:9px}.map-editor-pro{--editor-accent:#176b4d;--editor-border:#d7e0dd;background:#fff;border:1px solid #bdcbc6;border-radius:12px;gap:0;display:grid;overflow:hidden;box-shadow:0 12px 34px #19342a14}.map-editor-toolbar{border:0;border-bottom:1px solid var(--editor-border);background:linear-gradient(#fff,#f8faf9);align-items:center;gap:10px;min-width:0;padding:9px 11px;display:flex;overflow-x:auto}.editor-tool-group{border-right:1px solid #dce4e3;align-items:center;gap:4px;padding-right:12px;display:flex}.editor-tool-group.right{border-right:0;margin-left:auto;padding-right:0}.editor-tool-group>span{color:#68757b;margin-right:3px;font-size:10px;font-weight:800}.editor-tool-group>.editor-version{color:#513787;white-space:nowrap;background:#f4f0fb;border:1px solid #9d83cb;border-radius:5px;margin:0 4px 0 0;padding:6px 8px;font-size:11px}.editor-tool-group button{color:#37474f;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #cbd5d4;border-radius:5px;flex:none;height:30px;padding:0 9px}.editor-tool-group button:hover{background:#f2f8f5;border-color:#8caf9f}.editor-tool-group button.active{color:#155238;background:#e3f4eb;border-color:#257457;font-weight:800}.editor-snap-step{color:#37474f;background:#fff;border:1px solid #cbd5d4;border-radius:5px;height:30px;padding:0 5px;font-size:10px;font-weight:750}.editor-tool-group button.template{color:#573b8b;background:#f2edfb;border-color:#8b6cc4;font-weight:800}.editor-tool-group button.publish{color:#fff;background:#276a51;border-color:#1e5742;font-weight:800}.editor-tool-group button.activate{color:#fff;background:#276b8c;border-color:#1f536e;font-weight:800}.editor-tool-group button:disabled{opacity:.45;cursor:not-allowed}.map-editor-shell{background:#fff;grid-template-rows:minmax(0,1fr);grid-template-columns:218px minmax(0,1fr) 310px;height:clamp(640px,100vh - 245px,920px);min-height:0;display:grid;overflow:hidden}.map-editor-lines{box-sizing:border-box;border-right:1px solid var(--editor-border);background:#f7faf9;flex-direction:column;min-width:0;min-height:0;padding:12px 9px;display:flex;overflow:hidden}.editor-pane-title{justify-content:space-between;align-items:flex-start;gap:8px;min-height:34px;padding:0 3px 10px;display:flex}.editor-pane-title h3,.map-editor-inspector h3{color:#293d44;margin:0;font-size:12px}.editor-pane-title small{color:#82908b;margin-top:3px;font-size:9px;display:block}.editor-pane-title>button{width:28px;height:28px;color:var(--editor-accent);cursor:pointer;background:#fff;border:1px solid #bfcfca;border-radius:6px;font-size:17px}.line-layer-list{gap:3px;display:grid;overflow-y:auto}.map-editor-lines>.line-layer-list:first-of-type{flex:auto;min-height:110px}.editor-pane-title.decoration-title{border-top:1px solid #dce4e3;min-height:38px;margin-top:10px;padding-top:10px}.decoration-layers{flex:none;max-height:132px}.hub-layer-list{flex:none;gap:3px;max-height:150px;display:grid;overflow-y:auto}.hub-layer{color:#344942;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:7px;min-height:35px;padding:4px 7px;display:grid}.hub-layer:hover{background:#fff;border-color:#d0ded9}.hub-layer.active{background:#e9f6ef;border-color:#a9ccbd;box-shadow:inset 3px 0 #267558}.hub-layer>span:last-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:10px;font-weight:800;overflow:hidden}.hub-layer small{color:#7b8a85;margin-top:2px;font-size:8px;font-weight:600;display:block}.hub-swatches{background:#fff;border:2px solid #31413e;border-radius:9px;justify-content:center;align-items:center;width:27px;min-height:15px;padding:1px;display:flex;overflow:hidden}.hub-swatches i{border-radius:3px;flex:none;width:5px;height:9px}.line-layer{border:1px solid #0000;border-radius:7px;grid-template-columns:22px minmax(0,1fr) 24px 22px;align-items:center;gap:2px;padding:4px 3px;display:grid}.line-layer:hover{background:#fff;border-color:#d0ded9}.line-layer.active{background:#e9f6ef;border-color:#a9ccbd;box-shadow:inset 3px 0 #267558}.line-layer.inactive{opacity:.62;border-style:dashed}.map-editor-lines .line-layer button{color:#52635e;text-align:center;cursor:pointer;background:0 0;border:0;border-radius:4px;width:auto;height:27px;padding:0;display:block}.map-editor-lines .line-layer button:hover{background:#226b4f17}.map-editor-lines .line-main{grid-template-columns:9px minmax(0,1fr);align-items:center;gap:7px;text-align:left!important;display:grid!important}.map-editor-lines .line-main i{border-radius:4px;width:9px;height:24px}.map-editor-lines .line-main span{color:#344942;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:800;overflow:hidden}.map-editor-lines .line-main small{color:#7b8a85;margin-top:2px;font-size:8px;font-weight:600;display:block}.line-visibility{font-size:9px}.line-lock{font-size:12px}.line-order{display:grid}.map-editor-lines .line-order button{width:20px;height:12px;font-size:8px;line-height:10px}.map-editor-lines .line-order button:disabled{opacity:.25}.layer-actions{grid-template-columns:1fr;gap:5px;margin-top:auto;padding-top:10px;display:grid}.map-editor-lines .layer-actions button{color:#3e554c;cursor:pointer;background:#fff;border:1px solid #c7d5d0;border-radius:6px;height:30px;font-size:10px;font-weight:700}.map-editor-lines .layer-actions button:hover{background:#edf7f2;border-color:#87af9f}.map-editor-lines .layer-actions button:disabled{opacity:.4}.map-editor-stage{background:#eef5f2;grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid}.editor-ruler{color:#5e7074;white-space:nowrap;background:#fff;border-bottom:1px solid #dce4e3;align-items:center;gap:6px;min-width:0;padding:8px 12px;font-size:10px;display:flex}.editor-ruler>span{text-overflow:ellipsis;min-width:0;margin-right:auto;overflow:hidden}.editor-ruler kbd{color:#53645e;background:#f8faf9;border:1px solid #cfd8d5;border-bottom-width:2px;border-radius:4px;padding:1px 4px;font-family:inherit;font-size:8px}.map-editor-scroll{overflow-anchor:none;overscroll-behavior:contain;background-color:#edf3f1;background-image:radial-gradient(#cddbd6 1px,#0000 1px);background-size:16px 16px;min-height:0;padding:24px;overflow:auto}.map-editor-canvas{cursor:grab;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #d9e2df;min-width:900px;margin-bottom:25vh;display:block;box-shadow:0 9px 28px #18322a24}.map-editor-scroll.panning,.map-editor-scroll.panning .map-editor-canvas{cursor:grabbing}.map-editor-scroll.panning .map-editor-canvas{pointer-events:auto}.editor-reference-image{pointer-events:none}.reference-opacity{accent-color:#6b4c9d;width:64px}.editor-grid line{stroke:#e7eeec;stroke-width:1px}.editor-marquee{pointer-events:none}.editor-marquee rect{fill:#1c70501f;stroke:#176b4d;stroke-width:2px;stroke-dasharray:10 6;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px #124b362e)}.editor-decoration-hit{fill:none;stroke:#0000;cursor:pointer}.editor-decoration-line{fill:none;stroke-linejoin:round;pointer-events:none;transition:filter .15s}.editor-decoration.selected .editor-decoration-line{filter:drop-shadow(0 0 5px #37719173)}.editor-decoration-point{fill:#fff;stroke:#3980a7;stroke-width:4px;cursor:move}.editor-route-hit{fill:none;stroke:#0000;stroke-width:28px;cursor:crosshair}.editor-route-line{fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;transition:opacity .15s,filter .15s}.editor-route.selected .editor-route-line{filter:drop-shadow(0 0 4px #19483473)}.editor-selected-segment{fill:none;stroke:#186c4d3d;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 2px #144c3959)}.editor-route.locked .editor-route-hit{cursor:pointer}.editor-route.locked .editor-route-line{opacity:.72!important}.editor-line-badge{pointer-events:none}.editor-line-badge rect{stroke-width:3px}.editor-line-badge text{paint-order:stroke;stroke:#fff;stroke-width:2px;font-size:12px;font-weight:900}.editor-waypoint-control{cursor:move}.editor-waypoint-hit{fill:#0000;stroke:none;pointer-events:all}.editor-waypoint{fill:#fff;stroke:#1f7253;stroke-width:3px;pointer-events:none}.editor-waypoint.selected{fill:#1f7253;stroke:#fff}.editor-alignment-guides{pointer-events:none}.editor-alignment-guides line{stroke:#d12c86;stroke-width:1.5px;stroke-dasharray:7 5;vector-effect:non-scaling-stroke}.editor-station{cursor:move}.editor-station .station-halo{fill:#fff;stroke:#fff;stroke-width:3px;pointer-events:none}.editor-station .station-marker{fill:#fff;stroke:#24353a;stroke-width:3px}.editor-station .station-inner{fill:#fff;stroke:#24353a;stroke-width:2px}.editor-station.unmatched .station-marker{fill:#fff5e1;stroke:#d38519;stroke-dasharray:3 2}.editor-station.unmatched text{fill:#9c5d05}.editor-station.inactive .station-marker{fill:#f1f4f3;stroke:#7f8b87;stroke-dasharray:4 3}.editor-station.inactive text{fill:#7a8581;opacity:.74}.editor-hub.inactive .hub-shell{fill:#f1f4f3;stroke:#7f8b87;stroke-dasharray:5 3}.map-editor-canvas.inactive-emphasis .editor-station:not(.inactive),.map-editor-canvas.inactive-emphasis .editor-hub:not(.inactive){opacity:.16}.map-editor-canvas.inactive-emphasis .editor-station.inactive,.map-editor-canvas.inactive-emphasis .editor-hub.inactive{opacity:1;filter:drop-shadow(0 0 5px #d4771866)}.editor-station.selected .station-marker{fill:#1f7253;stroke:#fff;stroke-width:4px;filter:drop-shadow(0 0 4px #175b4099)}.station-label-leader{stroke:#82908b;stroke-width:2px;stroke-linecap:round;pointer-events:none}.editor-station text{fill:#1a2529;paint-order:stroke fill;stroke:#fff;stroke-width:5px;stroke-linejoin:round;pointer-events:none;font-size:13px;font-weight:750}.editor-station .editor-station-label,.editor-hub .editor-station-label{pointer-events:auto;cursor:move}.editor-station .editor-station-label:hover,.editor-hub .editor-station-label:hover{fill:#176b4d}.editor-hub{cursor:move}.editor-hub.locked{cursor:default}.editor-hub .hub-hit{fill:#0000;stroke:#0000}.editor-hub .hub-halo{fill:#fff;stroke:#fff;stroke-width:4px;pointer-events:none}.editor-hub .hub-shell{fill:#fff;stroke:#24353a;stroke-width:3px;transition:filter .15s,stroke-width .15s}.editor-hub .hub-port{stroke:#fff;stroke-width:1.5px;cursor:grab;pointer-events:all;transition:r .12s,stroke-width .12s,filter .12s}.editor-hub .hub-port:hover{r:6px;stroke-width:2.5px;filter:drop-shadow(0 0 4px #0f2b21b3)}.editor-hub .hub-port.selected{r:6.5px;stroke:#102e23;stroke-width:3px;filter:drop-shadow(0 0 5px #176b4db8)}.editor-hub.locked .hub-port{cursor:not-allowed;opacity:.72}.editor-hub text{fill:#172328;paint-order:stroke fill;stroke:#fff;stroke-width:6px;stroke-linejoin:round;pointer-events:none;font-size:20px;font-weight:850}.editor-hub.selected .hub-shell{stroke:#176b4d;stroke-width:5px;filter:drop-shadow(0 0 6px #176b4d8c)}.editor-hub.locked .hub-shell{opacity:.84}.editor-hub-route-anchors{pointer-events:none}.hub-route-spoke{stroke:#73847e;stroke-width:1.5px;stroke-dasharray:4 4;opacity:.5;pointer-events:none;vector-effect:non-scaling-stroke}.hub-route-control-link{stroke:#176b4d;stroke-width:1.5px;stroke-dasharray:3 3;opacity:.7;pointer-events:none;vector-effect:non-scaling-stroke}.hub-route-origin{fill:#fff;stroke:#647770;stroke-width:2px;pointer-events:none;vector-effect:non-scaling-stroke}.hub-route-handle{stroke:#fff;stroke-width:3px;cursor:move;pointer-events:all;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px #122b2261)}.hub-route-anchor.selected .hub-route-handle{stroke:#102e23;stroke-width:4px;filter:drop-shadow(0 0 6px #176b4db8)}.hub-route-anchor.selected .hub-route-origin{stroke:#176b4d;stroke-width:4px}.hub-route-anchor.locked .hub-route-handle{opacity:.5;cursor:not-allowed}.editor-preview{pointer-events:none;opacity:.6}.editor-preview polyline{fill:none;stroke-width:7px;stroke-dasharray:10 7;stroke-linecap:round}.map-editor-inspector{box-sizing:border-box;border-left:1px solid var(--editor-border);background:#fbfdfc;min-width:0;min-height:0;padding:13px;overflow-y:auto}.editor-selection{background:#eff8f3;border:1px solid #cce1d6;border-radius:7px;gap:4px;margin-bottom:16px;padding:11px;display:grid}.editor-selection strong{color:#155038;font-size:12px}.editor-selection span{color:#344d43}.editor-selection small{color:#6b7b76}.editor-selection.range-ready{background:#e8f7f0;border-color:#67a88d}.editor-selection.range-waiting{background:#fff9e8;border-color:#dbc98f}.angle-action-title{color:#4d5d57;font-size:9px}.angle-action-grid{grid-template-columns:repeat(4,1fr);gap:5px;display:grid}.angle-action-grid button,.waypoint-auto-angle{color:#245c48;cursor:pointer;background:#fff;border:1px solid #bdcec7;border-radius:5px;min-height:30px;font-size:10px;font-weight:850}.angle-action-grid button:hover,.waypoint-auto-angle:hover{background:#edf7f2;border-color:#5e9d83}.angle-action-grid button:disabled,.waypoint-auto-angle:disabled{opacity:.4;cursor:default}.waypoint-auto-angle{color:#59428a;border-color:#8b78ba;width:100%}.line-nudge-grid{grid-template-columns:repeat(3,31px);justify-content:center;gap:4px;display:grid}.line-nudge-grid button{color:#245c48;cursor:pointer;background:#fff;border:1px solid #bdcec7;border-radius:5px;width:31px;height:29px;font-weight:900}.line-nudge-grid button:hover{background:#edf7f2;border-color:#5e9d83}.armed-station{color:#825900;text-align:left;cursor:pointer;background:#fff6df;border:1px solid #dfb65a;border-radius:6px;width:100%;margin-top:10px;padding:8px}.inspector-section{border-top:1px solid var(--editor-border);gap:9px;padding:12px 0;display:grid}.inspector-section:first-of-type{border-top:0;padding-top:0}.inspector-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.inspector-heading h3{margin:0}.inspector-heading button{color:#28664f;cursor:pointer;background:#fff;border:1px solid #c4d4ce;border-radius:5px;padding:5px 7px;font-size:9px;font-weight:800}.property-grid label{color:#65736e;gap:5px;font-size:9px;font-weight:800;display:grid}.property-grid label>span{justify-content:space-between;gap:5px;display:flex}.property-grid input:not([type=range]):not([type=color]),.property-grid select{box-sizing:border-box;color:#30433c;background:#fff;border:1px solid #cad5d1;border-radius:5px;width:100%;height:31px;padding:0 8px;font-size:11px}.property-grid input:disabled{color:#87918d!important;background:#f0f3f2!important}.property-grid input[type=range]{width:100%;accent-color:var(--editor-accent)}.color-property{grid-template-columns:42px 1fr;align-items:end}.color-property>span{grid-column:1/-1}.color-property input[type=color]{background:#fff;border:1px solid #cad5d1;border-radius:5px;width:42px;height:32px;padding:3px}.color-property code{color:#5c6c66;align-self:center;font-size:10px}.coordinate-grid{grid-template-columns:1fr 1fr;gap:7px;display:grid}.property-switches,.property-actions{grid-template-columns:1fr 1fr;gap:6px;display:grid}.property-switches button,.property-actions button{color:#50635c;cursor:pointer;background:#fff;border:1px solid #c8d4d0;border-radius:5px;min-height:31px;font-size:9px;font-weight:800}.property-switches button.active{color:#155b40;background:#e7f5ee;border-color:#79aa96}.property-switches button.active.lock{color:#805700;background:#fff4dd;border-color:#c99b49}.property-actions button.danger{color:#a43b31;border-color:#e2b7b2}.property-actions button:disabled{opacity:.4}.property-help{color:#71817b;font-size:9px;line-height:1.45}.hub-merge-action{background:#edf9f4;border:1px solid #a9d5c3;border-radius:7px;gap:5px;padding:8px;display:grid}.hub-merge-action button{color:#fff;cursor:pointer;background:#176b4d;border:1px solid #65aa8e;border-radius:5px;min-height:34px;font-size:10px;font-weight:850}.hub-merge-action button:hover{background:#10583e}.hub-merge-action small{color:#527267;font-size:8px;font-weight:700;line-height:1.45}.hub-port-editor{border-top:1px solid #dce4e3;gap:4px;padding-top:9px;display:grid}.hub-port-editor>strong{color:#485b54;margin-bottom:2px;font-size:9px}.hub-port-row{background:#fff;border:1px solid #d8e1de;border-radius:5px;grid-template-columns:9px minmax(0,1fr) 34px 23px 23px 37px;align-items:center;gap:4px;min-height:31px;padding:3px 4px 3px 7px;display:grid}.hub-port-row>i{border-radius:4px;width:8px;height:21px}.hub-port-row>span{color:#344942;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:9px;font-weight:800;overflow:hidden}.hub-port-row small{color:#82908b;font-size:7px;font-weight:600;display:block}.hub-port-row button{color:#456258;cursor:pointer;background:#edf3f1;border:0;border-radius:4px;height:23px}.hub-port-row button:hover{background:#dcebe5}.hub-port-row button:disabled{opacity:.3;cursor:default}.hub-port-row button.edit-port{color:#176044;background:#e8f4ef;font-size:8px;font-weight:850}.hub-port-row button.edit-port:hover{background:#d5ebe1}.hub-port-row button.release-port{color:#9a493f;font-size:8px;font-weight:850}.hub-port-row button.release-port:hover{background:#fff0ee}.mapping-chip{border-radius:5px;padding:7px 8px;font-size:9px;font-weight:900}.mapping-chip.mapped{color:#176044;background:#e6f4ed}.mapping-chip.unmatched{color:#925b08;background:#fff1d7}.editor-validation{color:#63737a;border:1px solid #d5dfdc;border-radius:7px;gap:5px;margin-top:10px;padding:10px;font-size:10px;display:grid}.editor-validation strong{color:#3c4c53;font-size:11px}.editor-validation small{color:#7b6a4c;line-height:1.35}.editor-validation.valid{background:#edf8f3;border-color:#acd3c2}.editor-validation.valid strong{color:#176044}.editor-validation.warning{background:#fff9ed;border-color:#e6cb95}.editor-validation.warning strong{color:#8a5b0d}.map-editor-status{border-top:1px solid var(--editor-border);color:#687770;background:#f7f9f8;align-items:center;gap:0;min-height:29px;font-size:9px;display:flex}.map-editor-status span{border-right:1px solid var(--editor-border);align-items:center;gap:6px;min-height:29px;padding:0 12px;display:flex}.map-editor-status span:last-child{border-right:0;margin-left:auto}.map-editor-status i{border-radius:50%;width:8px;height:8px}.map-editor-status .dirty{color:#9a5d06;font-weight:800}.schematic-context-menu{z-index:5000;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffffa;border:1px solid #b9c9c3;border-radius:10px;width:210px;position:fixed;overflow:hidden;box-shadow:0 16px 42px #142c233d,0 2px 8px #142c231f}.schematic-context-menu header{background:#f3f8f6;border-bottom:1px solid #e0e8e5;gap:2px;padding:11px 12px 9px;display:grid}.schematic-context-menu header strong{color:#173b2e;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.schematic-context-menu header small{color:#70817b;font-size:9px;font-weight:750}.schematic-context-menu>div{padding:5px;display:grid}.schematic-context-menu button{color:#334a41;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;min-height:30px;padding:0 9px;font-size:10px;font-weight:750}.schematic-context-menu button:hover{color:#15543d;background:#e9f4ef}.schematic-context-menu button.danger{color:#b23939}.schematic-context-menu button.danger:hover{color:#9d2828;background:#fff0ef}.schematic-context-menu button:disabled{color:#aab4b0;cursor:default}.schematic-context-menu button:disabled:hover{background:0 0}.workspace-tabs{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;display:grid}.workspace-tabs button{color:#5d6a72;text-align:left;cursor:pointer;background:#fff;border:1px solid #d7dee1;border-radius:9px;padding:13px 14px}.workspace-tabs button:hover{border-color:#9eb8b3}.workspace-tabs button.active{color:#1d4e3f;background:#eaf6f0;border-color:#346c5b}.workspace-tabs strong,.workspace-tabs small{display:block}.workspace-tabs strong{font-size:13px}.workspace-tabs small{color:inherit;opacity:.78;margin-top:4px;font-size:10px;line-height:1.35}.selectable-table tbody tr{cursor:pointer}.selectable-table tbody tr:hover,.selectable-table tbody tr.selected{background:#edf7f2}.guidance-session-detail h3{color:#394852;margin:18px 0 9px;font-size:13px}.guidance-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.guidance-detail-grid>div{border:1px solid #dfe5e7;border-radius:8px;min-width:0;padding:0 12px 10px}.guidance-detail-row{border-top:1px solid #edf0f1;grid-template-columns:minmax(90px,.8fr) minmax(120px,1.2fr) minmax(100px,1fr);align-items:center;gap:8px;padding:10px 0;font-size:12px;display:grid}.guidance-detail-row:first-of-type{border-top:0}.guidance-detail-row span{color:#53636c}.guidance-detail-row small{color:#7a8790;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=1180px){.overview-status-grid,.workspace-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.map-editor-shell{grid-template-columns:190px minmax(720px,1fr) 280px}.map-editor-pro{overflow-x:auto}}@media (width<=760px){.overview-hero{flex-direction:column;align-items:flex-start}.guidance-detail-grid{grid-template-columns:1fr}.realtime-status-hero{flex-direction:column;align-items:flex-start}.realtime-hero-metrics{width:100%}.realtime-attention-row{grid-template-columns:1fr 70px}.schematic-editor-body{grid-template-columns:1fr}.schematic-inspector{border-top:1px solid #d9e1e1;border-left:0}.map-editor-toolbar{position:sticky;left:0}}.page-grid{gap:14px;display:grid}.master-grid{grid-template-columns:minmax(0,1fr) 360px}.master-wide{grid-column:1/-1;min-width:0}.panel{background:#fff;border:1px solid #bcbcbc}.narrow-panel{max-width:980px}.section-header{background:#f5f5f5;border-bottom:1px solid #d0d0d0;padding:13px 14px}.section-header h2{margin:0;font-size:16px}.section-header p{color:#666;margin:5px 0 0}.summary-row{border-bottom:1px solid #d8d8d8;grid-template-columns:repeat(5,1fr);display:grid}.quality-summary,.integrity-summary{grid-template-columns:repeat(7,1fr)}.feedback-summary{grid-template-columns:repeat(4,1fr)}.quality-summary{grid-template-columns:repeat(6,1fr)}.station-summary{grid-template-columns:repeat(5,1fr)}.dashboard-summary{border-bottom:0}.summary{background:#fbfbfb;border-right:1px solid #d8d8d8;padding:12px}.summary:last-child{border-right:0}.summary span{color:#666;display:block}.summary strong{margin-top:5px;font-size:18px;display:block}.toolbar{background:#fafafa;border-bottom:1px solid #d8d8d8;align-items:center;gap:8px;padding:10px;display:flex}.toolbar-meta{color:#666;margin-left:auto}.line-selector{color:#555;gap:5px;width:220px;font-weight:700;display:grid}.line-selector span{font-size:12px}.inline-error{color:#b42318;background:#fff4f2;border:1px solid #b42318;margin:12px;padding:10px 12px}.scheduler-row{border-top:1px solid #d8d8d8;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;display:grid}.scheduler-row .detail-row{background:#fbfbfb;border-bottom:0;border-right:1px solid #d8d8d8;grid-template-columns:92px 1fr;padding:10px 12px}.scheduler-row .detail-row:last-child{border-right:0}.problem-grid{border-bottom:1px solid #d8d8d8;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;display:grid}.problem-card{background:#fff;border-bottom:1px solid #d8d8d8;border-right:1px solid #d8d8d8;min-height:166px;padding:12px}.problem-card:nth-child(4n){border-right:0}.problem-card.critical{background:#fff4f2}.problem-card.warning{background:#fffaf0}.problem-card.info{background:#f5f8fb}.problem-card.ok{background:#f0f7f1}.problem-head{align-items:center;gap:8px;display:flex}.problem-head strong{font-size:14px}.problem-metric{margin-top:10px;font-size:20px;font-weight:800}.problem-card p{color:#444;min-height:34px;margin:8px 0;line-height:1.35}.problem-action{color:#333;background:#ffffffa6;border:1px solid #d0d0d0;padding:7px 8px;font-weight:700}.problem-card small{color:#666;overflow-wrap:anywhere;margin-top:7px;display:block}.audit-grid{grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.audit-check{background:#fff;border-bottom:1px solid #d8d8d8;border-right:1px solid #d8d8d8;min-height:82px;padding:12px 12px 10px 42px;position:relative}.audit-check:nth-child(5n){border-right:0}.audit-check.critical{border-left:4px solid #b42318}.audit-check.warning{border-left:4px solid #9a6b00}.audit-check.info{border-left:4px solid #527391}.audit-check.ok{border-left:4px solid #2e7d32}.audit-index{background:#f5f5f5;border:1px solid #bcbcbc;justify-content:center;align-items:center;width:22px;height:22px;font-weight:800;display:inline-flex;position:absolute;top:12px;left:12px}.audit-check strong,.audit-check span,.audit-check em{display:block}.audit-check span{color:#555;margin-top:4px}.audit-check em{color:#222;overflow-wrap:anywhere;margin-top:6px;font-style:normal;font-weight:800}.table-wrap{overflow:auto}.table-wrap.short{max-height:360px}.table-wrap.mini{max-height:260px}.admin-table{border-collapse:collapse;table-layout:fixed;width:100%}.admin-table th{color:#333;text-align:left;background:#eee;border:1px solid #c8c8c8;height:34px;padding:0 8px;font-weight:700}.admin-table td{vertical-align:middle;background:#fff;border:1px solid #d9d9d9;padding:8px}.admin-table tr:hover td,.admin-table tr.selected td{background:#eef3f8}.admin-table small{color:#777}.admin-table.compact th,.admin-table.compact td{font-size:12px}.feedback-table th:first-child{width:140px}.feedback-table th:nth-child(2){width:74px}.feedback-table th:nth-child(3){width:230px}.feedback-table th:nth-child(4){width:34%}.feedback-table th:nth-child(5){width:190px}.feedback-table th:nth-child(6){width:120px}.feedback-message{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}.feedback-device-id{overflow-wrap:anywhere;color:#666}.feedback-device-id small,.feedback-route small{margin-top:3px;display:block}.feedback-route{min-width:180px;line-height:1.35}.feedback-route strong{color:#222;display:block}.quality-table th,.quality-table td{font-size:12px}.collected-summary{grid-template-columns:repeat(6,1fr)}.operations-summary{grid-template-columns:repeat(10,1fr)}.pattern-summary,.inventory-summary{grid-template-columns:repeat(8,1fr)}.pattern-refresh-strip{background:#fbfbfb;border-top:1px solid #d8d8d8;grid-template-columns:1.4fr .5fr .8fr;display:grid}.pattern-refresh-strip .detail-row{border-bottom:0;border-right:1px solid #d8d8d8;grid-template-columns:90px 1fr;padding:8px 10px}.pattern-refresh-strip .detail-row:last-child{border-right:0}.risk-pattern-grid{grid-template-columns:repeat(5,minmax(0,1fr));display:grid}.risk-pattern{background:#fffaf0;border-bottom:1px solid #d8d8d8;border-right:1px solid #d8d8d8;min-height:92px;padding:12px}.risk-pattern:nth-child(5n){border-right:0}.risk-pattern strong,.risk-pattern span,.risk-pattern em{overflow-wrap:anywhere;display:block}.risk-pattern span{color:#555;margin-top:6px}.risk-pattern em{color:#6f4e00;margin-top:8px;font-style:normal;font-weight:700}.pattern-table th,.pattern-table td{font-size:12px}.pattern-actions{flex-wrap:wrap;gap:4px;display:flex}.btn.tiny{height:26px;padding:0 7px;font-size:12px}.quality-detail-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,.75fr);gap:0;display:grid}.operations-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,1.1fr) minmax(320px,.8fr);gap:0;display:grid}.quality-table-block{border-right:1px solid #d8d8d8;min-width:0}.quality-table-block:last-child{border-right:0}.quality-table-block h3{background:#fafafa;border-bottom:1px solid #d8d8d8;margin:0;padding:10px 12px;font-size:13px}.block-title-row{background:#fafafa;border-bottom:1px solid #d8d8d8;justify-content:space-between;align-items:center;min-height:42px;display:flex}.block-title-row h3{background:0 0;border-bottom:0}.block-title-row .btn{margin-right:10px}.rollup-strip{background:#fbfbfb;border-bottom:1px solid #d8d8d8;grid-template-columns:1fr 1fr;display:grid}.rollup-strip .detail-row{border-bottom:0;border-right:1px solid #d8d8d8;grid-template-columns:70px 1fr;padding:8px 10px}.master-source-strip{background:#fbfbfb;border-bottom:1px solid #d8d8d8;grid-template-columns:1fr 1.4fr .6fr .8fr;display:grid}.master-source-strip .detail-row{border-bottom:0;border-right:1px solid #d8d8d8;grid-template-columns:86px 1fr;min-width:0;padding:8px 10px}.master-source-strip .detail-row:last-child,.rollup-strip .detail-row:nth-child(2n){border-right:0}.issue-cell{color:#333;overflow-wrap:anywhere;font-weight:700}.retention-box{padding:12px}.retention-box .detail-row{grid-template-columns:100px 1fr}.retention-actions{gap:8px;margin-top:12px;display:flex}.retention-result{background:#fafafa;border:1px solid #d0d0d0;justify-content:space-between;margin-top:12px;padding:9px 10px;display:flex}.quality-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;display:grid}.status-badge,.score-pill{white-space:nowrap;background:#f1f1f1;border:1px solid #9a9a9a;justify-content:center;align-items:center;min-width:46px;height:24px;padding:0 7px;font-weight:700;display:inline-flex}.status-badge.good,.score-pill.good,.status-badge.station-active{color:#1b5e20;background:#e8f5e9;border-color:#2e7d32}.status-badge.watch,.score-pill.watch,.status-badge.station-weak{color:#6f4e00;background:#fff8df;border-color:#9a6b00}.status-badge.risk,.score-pill.risk,.status-badge.station-unseen{color:#b42318;background:#fff4f2;border-color:#b42318}.status-badge.severity-critical{color:#b42318;background:#ffe7e3;border-color:#b42318}.status-badge.severity-warning{color:#6f4e00;background:#fff2c2;border-color:#9a6b00}.status-badge.severity-info{color:#2c587a;background:#eef5fb;border-color:#527391}.status-badge.severity-ok{color:#1b5e20;background:#e8f5e9;border-color:#2e7d32}.status-badge.feedback-opinion{color:#2c587a;background:#eef5fb;border-color:#527391}.status-badge.feedback-bug{color:#b42318;background:#fff4f2;border-color:#b42318}.status-badge.feedback-route_issue{color:#6f4e00;background:#fff8df;border-color:#9a6b00}.status-badge.pattern-accepted,.status-badge.pattern-manual,.status-badge.pattern-quality-strong,.status-badge.review-pass{color:#1b5e20;background:#e8f5e9;border-color:#2e7d32}.status-badge.pattern-candidate,.status-badge.pattern-quality-watch,.status-badge.review-provisional,.status-badge.review-watch{color:#6f4e00;background:#fff8df;border-color:#9a6b00}.status-badge.pattern-rejected,.status-badge.pattern-deprecated,.status-badge.pattern-quality-risk,.status-badge.review-insufficient_data,.status-badge.review-direction_noise,.status-badge.review-fail{color:#b42318;background:#fff4f2;border-color:#b42318}.table-message{text-align:center;color:#777;height:70px}.detail-panel{min-height:480px}.empty-box{color:#666;text-align:center;background:#fafafa;border:1px dashed #aaa;margin:14px;padding:24px}.detail-list{padding:12px}.detail-row{border-bottom:1px solid #e3e3e3;grid-template-columns:110px 1fr;padding:9px 0;display:grid}.detail-row span{color:#666}.detail-row strong{overflow-wrap:anywhere}.issue-list{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.issue-list span{background:#f2f2f2;border:1px solid #b7b7b7;padding:4px 7px}.info-table{border-collapse:collapse;width:100%;max-width:calc(100% - 28px);margin:14px}.info-table th,.info-table td{text-align:left;border:1px solid #d0d0d0;padding:9px}.info-table th{background:#f1f1f1;width:160px}.sub-title{margin:18px 14px 8px;font-size:15px}.plain-list{margin:0 14px 18px;padding-left:20px}.plain-list li{margin:6px 0}.diagnostic-form{background:#fafafa;border-bottom:1px solid #d8d8d8;grid-template-columns:1fr 1fr 100px;gap:8px;padding:12px;display:grid}.diagnostic-form label{color:#555;gap:5px;font-weight:700;display:grid}.route-result{padding-bottom:14px}.leg-block{margin:14px}.leg-block h3{margin:0 0 8px;font-size:14px}.leg-meta-row{color:#666;flex-wrap:wrap;gap:8px;margin-bottom:8px;font-size:12px;display:flex}.leg-meta-row span{background:#f7f7f7;border:1px solid #d0d0d0;padding:4px 6px}.map-demo-grid{grid-template-columns:360px minmax(0,1fr);gap:14px;display:grid}.map-demo-control,.route-map-panel{grid-column:1/-1}.map-demo-toolbar{background:#fafafa;border-bottom:1px solid #d8d8d8;grid-template-columns:220px 220px minmax(280px,1fr) 90px 90px;align-items:end;gap:8px;padding:12px;display:grid;position:relative}.map-demo-toolbar label{color:#555;gap:5px;font-weight:700;display:grid}.map-demo-toolbar .line-selector{width:auto}.station-autocomplete{position:relative}.autocomplete-menu{z-index:20;background:#fff;border:1px solid #9da5ad;max-height:320px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto;box-shadow:0 8px 18px #0000001f}.autocomplete-menu button{color:#222;text-align:left;cursor:pointer;background:#fff;border:0;border-bottom:1px solid #e4e4e4;grid-template-columns:120px 1fr;gap:8px;width:100%;min-height:38px;padding:7px 9px;display:grid}.autocomplete-menu button:hover{background:#eef3f8}.autocomplete-menu span{color:#666;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.map-pattern-list-panel{min-height:420px}.map-pattern-list{max-height:620px;padding:10px;overflow:auto}.map-pattern-card{text-align:left;cursor:pointer;background:#fff;border:1px solid #c9c9c9;grid-template-columns:58px minmax(0,1fr);gap:6px 8px;width:100%;min-height:66px;margin-bottom:8px;padding:9px;display:grid}.map-pattern-card:hover,.map-pattern-card.active{background:#f2f5f8;border-color:#5f6b7a}.map-pattern-card strong,.map-pattern-card small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.map-pattern-card small{color:#666;grid-column:2}.service-pill{color:#333;background:#f5f5f5;border:1px solid #bfc6ce;justify-content:center;align-items:center;width:52px;height:24px;font-size:12px;font-weight:800;display:inline-flex}.service-pill.express{color:#8a4518;background:#fff3e8;border-color:#a8612a}.service-pill.direct{color:#205470;background:#edf7fb;border-color:#2e6f8f}.warning-box{color:#7a5100;background:#fff9ed;border:1px solid #c68b1c;margin:12px 14px 0;padding:9px 11px}.info-box{color:#274d68;background:#f1f7fb;border:1px solid #9cb8cc;margin:12px 14px 0;padding:9px 11px}.route-strip-wrap{background:#fbfbfb;border:1px solid #d3d3d3;margin:14px;overflow-x:auto}.route-strip{min-width:100%;padding:18px 18px 22px;display:inline-flex}.route-node{color:#333;flex:0 0 112px;align-content:start;justify-items:center;gap:6px;width:112px;min-height:92px;display:grid;position:relative}.route-line{background:#687586;height:4px;position:absolute;top:13px;left:0;right:0}.route-node:first-child .route-line{left:50%}.route-node:last-child .route-line{right:50%}.route-dot{z-index:1;background:#fff;border:4px solid #687586;border-radius:50%;width:28px;height:28px;position:relative}.route-node.terminal .route-dot{background:#eef3f8;border-color:#334155}.route-node.selected .route-dot{background:#fff4f2;border-color:#b42318}.route-station-name{color:#222;text-align:center;overflow-wrap:anywhere;width:96px;min-height:32px;font-weight:800;line-height:1.25}.route-node small{color:#777}.route-stop-table{border:1px solid #d8d8d8;max-height:360px;margin:0 14px 14px}.live-map-page{grid-template-columns:minmax(0,1fr) 320px;gap:14px;display:grid}.live-map-control,.live-train-panel{grid-column:1/-1}.live-trip-form{background:#fff;border-bottom:1px solid #d8d8d8;grid-template-columns:minmax(240px,1fr) minmax(240px,1fr) 120px;align-items:end;gap:8px;padding:12px;display:grid;position:relative}.live-trip-station label{color:#444;gap:5px;font-weight:800;display:grid}.live-route-result{background:#f8fafc;border-bottom:1px solid #d8d8d8;grid-template-columns:minmax(260px,.8fr) minmax(0,1fr);gap:0;display:grid}.live-route-summary{border-right:1px solid #d8d8d8;gap:4px;padding:12px;display:grid}.live-route-summary strong{font-size:16px}.live-route-summary span{color:#555}.live-leg-tabs{flex-wrap:wrap;align-items:center;gap:6px;padding:10px;display:flex}.live-leg-tabs button{color:#222;cursor:pointer;background:#fff;border:1px solid #aeb6c0;min-height:30px;padding:0 10px}.live-leg-tabs button.active,.live-leg-tabs button:hover{background:#eef3f8;border-color:#374151;font-weight:800}.live-map-toolbar{background:#fafafa;border-bottom:1px solid #d8d8d8;grid-template-columns:200px 190px minmax(260px,1fr) minmax(260px,1fr) 82px 82px 112px;align-items:end;gap:8px;padding:12px;display:grid;position:relative;overflow-x:auto}.live-map-toolbar label{color:#555;gap:5px;font-weight:700;display:grid}.live-map-toolbar .line-selector{width:auto}.live-station-search{min-width:0}.live-map-summary{grid-template-columns:repeat(6,1fr)}.live-map-stage{min-width:0}.live-route-wrap{background:linear-gradient(#f8fafc 0%,#eef3f8 100%);border:1px solid #cfd4da;margin:14px;overflow-x:auto}.live-route-wrap.route-selected{background:linear-gradient(#fff 0%,#edf2f7 100%);border-color:#1f2937}.live-route-strip{min-width:100%;padding:22px 18px 24px;display:inline-flex}.live-route-node{color:#222;flex:0 0 132px;align-content:start;justify-items:center;gap:6px;width:132px;min-height:176px;display:grid;position:relative}.live-route-node.route-context{color:#6b7280}.live-route-node.route-segment:before{content:"";background:#0f766e12;border:1px solid #0f766e24;border-radius:8px;position:absolute;inset:-8px 6px 4px}.live-route-line{background:#55616f;height:5px;position:absolute;top:16px;left:0;right:0}.live-route-node.route-context .live-route-line{background:#c5ccd5}.live-route-node.route-segment .live-route-line{background:#0f766e;height:8px;top:15px;box-shadow:0 0 0 4px #0f766e1a}.live-route-arrow{z-index:2;color:#263241;background:#fff;border:1px solid #55616f;border-radius:999px;justify-content:center;align-items:center;width:22px;height:22px;font-size:16px;font-weight:900;display:inline-flex;position:absolute;top:2px;right:-8px}.live-route-node:last-child .live-route-arrow{display:none}.live-route-node.route-segment .live-route-arrow{color:#fff;background:#0f766e;border-color:#0f766e}.live-route-node.route-segment-end .live-route-arrow{display:none}.live-route-node:first-child .live-route-line{left:50%}.live-route-node:last-child .live-route-line{right:50%}.live-route-node.route-segment-start .live-route-line{left:50%}.live-route-node.route-segment-end .live-route-line{right:50%}.live-route-dot{z-index:1;color:#1f2937;background:#fff;border:4px solid #55616f;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:12px;font-weight:900;display:inline-flex;position:relative}.live-route-node.terminal .live-route-dot{background:#edf2f7;border-color:#263241}.live-route-node.route-segment .live-route-dot{background:#fff;border-color:#0f766e;box-shadow:0 0 0 5px #0f766e1f}.live-route-node.departure .live-route-dot{color:#0f5f59;background:#e6fffb;border-color:#0f766e}.live-route-node.destination .live-route-dot,.live-route-node.selected .live-route-dot{color:#b42318;background:#fff0ec;border-color:#b42318}.live-route-node strong{text-align:center;overflow-wrap:anywhere;width:112px;min-height:36px;line-height:1.25}.live-route-node small{color:#777;min-height:16px}.live-station-flags{flex-wrap:wrap;justify-content:center;gap:3px;min-height:22px;display:flex}.live-station-flags span{color:#374151;background:#fff;border:1px solid #9aa4b2;border-radius:999px;min-height:18px;padding:1px 5px;font-size:10px;font-weight:900;line-height:14px}.live-station-flags .express{color:#8a4518;background:#fff3e8;border-color:#a8612a}.live-station-flags .blocked{color:#4b5563;background:#f1f3f5;border-color:#7d8792}.live-train-stack{flex-wrap:wrap;place-content:flex-start center;gap:4px;width:112px;min-height:66px;display:flex}.live-train-chip,.live-more-chip{color:#174734;white-space:nowrap;clip-path:polygon(0 0,calc(100% - 14px) 0,100% 50%,calc(100% - 14px) 100%,0 100%);background:linear-gradient(#fff 0%,#e7f5ef 48%,#cfeade 100%);border:2px solid #2f6f58;border-radius:999px 12px 12px 999px;grid-template-columns:16px minmax(0,1fr) 18px;grid-template-areas:"windows main arrow""windows sub arrow""detail detail detail";justify-content:stretch;align-items:center;min-width:104px;min-height:44px;padding:5px 13px 5px 8px;font-size:12px;font-weight:800;display:inline-grid;position:relative;box-shadow:0 5px 12px #0f172a1f,inset 0 -3px #00000014,inset 0 1px #ffffffe6}.live-train-chip:after{content:"";opacity:.95;background:#fff;border-radius:50%;width:4px;height:4px;position:absolute;top:50%;right:7px;transform:translateY(-50%);box-shadow:0 0 8px #ffffffe6}.train-chip-window-row{grid-area:windows;align-content:center;justify-items:center;gap:3px;display:grid}.train-chip-window-row span{background:linear-gradient(#fffffff5,#bde0ece6);border-radius:2px;width:11px;height:5px;box-shadow:inset 0 0 0 1px #1118271f,0 1px #fffc}.train-chip-arrow{color:#111827;background:linear-gradient(#fffffff5,#f3f4f6e0);border:1px solid #1118271f;border-radius:999px;grid-area:arrow;justify-content:center;align-items:center;width:18px;height:30px;margin-left:-1px;font-size:17px;font-weight:900;display:inline-flex}.live-train-chip.local{color:#174734;background:linear-gradient(#fff 0%,#e7f5ef 48%,#cfeade 100%);border-color:#2f6f58}.live-train-chip.express{color:#8a4518;background:linear-gradient(#fff 0%,#fff0df 48%,#ffd8b5 100%);border-color:#a8612a}.live-train-chip.direct{color:#205470;background:linear-gradient(#fff 0%,#e8f6fb 48%,#c9e8f4 100%);border-color:#2e6f8f}.live-train-chip.off-pattern{color:#6f4e00;background:linear-gradient(#fff 0%,#fff6d7 48%,#ffe59c 100%);border-color:#8a5b00}.live-train-chip.cannot-reach{color:#4b5563;background:linear-gradient(#fff 0%,#f3f4f6 48%,#d7dce2 100%);border-color:#7d8792}.train-chip-main,.train-chip-sub{grid-area:main;justify-content:space-between;align-items:center;gap:5px;min-width:0;padding-right:3px;display:flex}.train-chip-sub{grid-area:sub}.train-chip-main strong{font-size:12px}.train-chip-main b{text-align:center;background:#ffffffbd;border:1px solid;border-radius:999px;min-width:30px;padding:1px 5px;font-size:10px}.train-chip-sub{color:inherit;opacity:.9;font-size:11px}.train-chip-sub em,.train-chip-detail{color:inherit;text-overflow:ellipsis;font-style:normal;overflow:hidden}.train-chip-detail{opacity:.85;grid-area:detail;max-width:260px;margin-top:2px;font-size:11px;display:block}.live-more-chip{color:#44505d;clip-path:none;background:#f1f3f5;border-color:#9aa4b2;border-radius:999px;min-width:44px;min-height:24px;display:inline-flex}.live-off-pattern{background:#fffaf0;border:1px solid #d8d8d8;flex-wrap:wrap;gap:6px;margin:0 14px 14px;padding:10px;display:flex}.live-route-notes{flex-wrap:wrap;gap:6px;margin:0 14px 14px;display:flex}.live-route-notes span{color:#4b5563;background:#fff;border:1px solid #c8cdd3;border-radius:999px;align-items:center;min-height:24px;padding:0 8px;font-size:12px;font-weight:800;display:inline-flex}.live-route-notes .snapshot-status.fresh{color:#0f5f59;background:#e6fffb;border-color:#0f766e}.live-route-notes .snapshot-status.partial,.live-route-notes .snapshot-status.stale{color:#8a4518;background:#fff3e8;border-color:#a8612a}.live-route-notes .snapshot-status.no-data{color:#b42318;background:#fff0ec;border-color:#b42318}.live-history-panel{min-width:0}.live-history-list{max-height:520px;padding:10px;overflow:auto}.live-history-item{color:#222;text-align:left;cursor:pointer;background:#fff;border:1px solid #c8c8c8;gap:4px;width:100%;min-height:54px;margin-bottom:8px;padding:9px;display:grid}.live-history-item:hover{background:#eef3f8;border-color:#7d8792}.live-history-item strong,.live-history-item span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.live-history-item span{color:#666}.live-train-table{max-height:520px}.live-train-table-title{background:#fafafa;border-bottom:1px solid #d8d8d8;margin:0;padding:10px 12px;font-size:13px}.train-badge-stack{flex-wrap:wrap;gap:4px;display:flex}.train-mini-badge{color:#374151;white-space:nowrap;background:#f3f4f6;border:1px solid #9aa4b2;justify-content:center;align-items:center;min-width:50px;height:23px;padding:0 6px;font-size:12px;font-weight:800;display:inline-flex}.train-mini-badge.local{color:#174734;background:#e8f5ef;border-color:#2f6f58}.train-mini-badge.express{color:#8a4518;background:#fff3e8;border-color:#a8612a}.train-mini-badge.direct{color:#205470;background:#edf7fb;border-color:#2e6f8f}.train-mini-badge.dir-forward{color:#26384d;background:#eef3f8;border-color:#40566f}.train-mini-badge.dir-zero{color:#234a78;background:#edf5ff;border-color:#315f9b}.train-mini-badge.dir-one{color:#563b70;background:#f4effa;border-color:#6d4c8d}.train-mini-badge.cannot-reach{color:#4b5563;background:#f1f3f5;border-color:#7d8792}.train-mini-badge.status-entering{color:#2c587a;background:#eef5fb;border-color:#527391}.train-mini-badge.status-arrived{color:#1b5e20;background:#e8f5e9;border-color:#2e7d32}.train-mini-badge.status-departed{color:#6f4e00;background:#fff8df;border-color:#6f5b00}.train-mini-badge.status-previous{color:#444;background:#f1f1f1;border-color:#777}.train-mini-badge.last-car{color:#b42318;background:#fff4f2;border-color:#b42318}.inventory-table th,.inventory-table td{font-size:12px}.file-state{background:#f2f2f2;border:1px solid #777;justify-content:center;align-items:center;min-width:48px;height:24px;font-weight:800;display:inline-flex}.file-state.ok{color:#1b5e20;background:#e8f5e9;border-color:#2e7d32}.file-state.missing{color:#b42318;background:#fff4f2;border-color:#b42318}.inventory-db-grid{grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.inventory-db-block{border-right:1px solid #d8d8d8;min-width:0}.inventory-db-block:last-child{border-right:0}.inventory-db-block h3{background:#fafafa;border-bottom:1px solid #d8d8d8;margin:0;padding:10px 12px;font-size:13px}.inventory-db-block .detail-row{grid-template-columns:110px 1fr;padding:9px 12px}.master-release-panel{overflow:hidden}.master-release-compare{grid-template-columns:minmax(0,1fr) 130px minmax(0,1fr);align-items:stretch;gap:12px;margin:14px;display:grid}.master-release-card{background:#fff;border:1px solid #b9c4cf;min-width:0;padding:16px}.master-release-card.active{background:#f3fbf7;border-left:5px solid #087f5b}.master-release-card.candidate{background:#f7fafd;border-left:5px solid #40566f}.master-release-card.empty{color:#6b7280}.master-release-title{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.master-release-title>span:first-child{color:#4b5563;font-size:12px;font-weight:900}.master-release-card>strong{color:#17202a;letter-spacing:.04em;margin-bottom:12px;font-size:21px;display:block}.master-release-card dl{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;display:grid}.master-release-card dl>div{background:#ffffffc7;border:1px solid #d8e0e8;min-width:0;padding:8px}.master-release-card dt{color:#6b7280;margin-bottom:3px;font-size:11px;font-weight:800}.master-release-card dd{color:#25313d;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:12px;font-weight:800;overflow:hidden}.master-release-source-count{color:#526170;margin-top:10px;font-size:11px;font-weight:800;display:block}.master-release-transition{color:#657382;text-align:center;justify-content:center;align-items:center;font-size:12px;font-weight:900;display:flex}.master-release-status{color:#40505f;white-space:nowrap;background:#eef2f6;border:1px solid #b9c4cf;align-items:center;min-height:23px;padding:0 8px;font-size:11px;font-weight:900;display:inline-flex}.master-release-status.active{color:#086046;background:#e8f7f0;border-color:#83c5ad}.master-release-status.ready{color:#294866;background:#eaf1f8;border-color:#8ba2ba}.master-release-status.failed,.master-release-status.rejected,.master-release-status.outdated{color:#9f2f25;background:#fff0ee;border-color:#dfb7b2}.master-release-actions{flex-wrap:wrap;gap:7px;margin-top:12px;display:flex}.master-release-diff{background:#fff;border:1px solid #cbd4de;margin:0 14px 14px}.master-release-diff-header{background:#f8fafc;border-bottom:1px solid #d8e0e8;justify-content:space-between;align-items:center;gap:14px;padding:12px;display:flex}.master-release-diff-header>div:first-child{gap:3px;display:grid}.master-release-diff-header span{color:#647181;font-size:12px}.release-diff-counts{gap:6px;display:flex}.release-diff-counts button{color:#354250;cursor:pointer;background:#fff;border:1px solid #bdc7d2;min-height:30px;padding:0 10px;font-weight:800}.release-diff-counts button.active{box-shadow:inset 0 0 0 2px}.release-diff-counts .added,.release-change-badge.added{color:#087f5b}.release-diff-counts .removed,.release-change-badge.removed{color:#b42318}.release-diff-counts .changed,.release-change-badge.changed{color:#8a5b00}.release-change-table-wrap{border:0;max-height:440px}.release-component-diff{background:#fbfcfd;border-bottom:1px solid #d8e0e8;gap:8px;padding:12px;display:grid}.release-component-diff>div{flex-wrap:wrap;gap:7px;display:flex}.release-component-diff span{color:#4a5866;background:#fff;border:1px solid #cbd4de;align-items:center;gap:6px;padding:6px 8px;font-size:12px;display:inline-flex}.release-component-diff span b{color:#263442}.release-component-diff span em{color:#8a5b00;font-size:11px;font-style:normal;font-weight:900}.release-change-table td{vertical-align:top}.release-change-badge{background:#fff;border:1px solid;padding:2px 7px;font-size:11px;font-weight:900;display:inline-flex}.station-change-preview{align-items:center;gap:7px;display:inline-flex}.station-change-preview del,.station-field-changes del{color:#9f2f25}.station-change-preview ins,.station-field-changes ins{color:#087f5b;font-weight:800;text-decoration:none}.station-field-changes{gap:5px;min-width:260px;display:grid}.station-field-changes>span{grid-template-columns:90px minmax(60px,1fr) 14px minmax(60px,1fr);align-items:start;gap:5px;display:grid}.station-field-changes b,.station-field-changes i{color:#617080;font-size:11px;font-style:normal}.master-release-history{border-top:1px solid #d8e0e8;gap:8px;margin:0 14px 14px;padding-top:12px;display:grid}.release-history-list{gap:7px;padding-bottom:4px;display:flex;overflow-x:auto}.release-history-list button{color:#25313d;text-align:left;cursor:pointer;background:#fff;border:1px solid #c5ced8;grid-template-columns:auto auto;align-items:center;gap:3px 8px;min-width:190px;padding:9px;display:grid}.release-history-list button.selected{border-color:#40566f;box-shadow:inset 0 0 0 1px #40566f}.release-history-list button small{color:#6b7280;grid-column:1/-1}.master-source-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px;display:grid}.master-source-summary>div{background:#f8fafc;border:1px solid #cbd4de;gap:4px;min-width:0;padding:11px 12px;display:grid}.master-source-summary span{color:#697787;font-size:11px;font-weight:800}.master-source-summary strong{color:#24313f;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.master-source-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;padding:0 14px 14px;display:grid}.master-source-card{background:#fff;border:1px solid #cbd4de;border-left:4px solid #81909f;gap:7px;min-width:0;padding:11px;display:grid}.master-source-card.changed{border-left-color:#c47b00}.master-source-card.review_required{border-left-color:#d56a00}.master-source-card.unavailable,.master-source-card.invalid,.master-source-card.stale{border-left-color:#bd2c22}.master-source-card.unchanged{border-left-color:#14845f}.master-source-card>div:first-child{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.master-source-card>div:first-child strong{color:#263442;font-size:13px}.master-source-card p,.master-source-card>small{color:#667483;margin:0;font-size:11px}.master-source-card dl{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0;display:grid}.master-source-card dl>div{min-width:0}.master-source-card dt{color:#84909d;font-size:10px;font-weight:800}.master-source-card dd{color:#3b4856;text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;font-size:11px;font-weight:700;overflow:hidden}.master-source-status{color:#566575;background:#f1f4f7;border:1px solid #b8c3ce;flex:none;padding:2px 6px;font-size:10px;font-weight:900}.master-source-status.unchanged{color:#087553;background:#edf9f4;border-color:#87cbb2}.master-source-status.changed,.master-source-status.review_required{color:#925b00;background:#fff7e8;border-color:#dfb566}.master-source-status.unavailable,.master-source-status.invalid,.master-source-status.stale{color:#a72e24;background:#fff0ee;border-color:#e0a19b}.master-source-error{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#a72e24!important}.refresh-type-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:14px;display:grid}.full-refresh-card{background:#f7fafd;border:2px solid #40566f;grid-template-columns:minmax(0,1fr) 220px;gap:18px;margin:14px;padding:16px;display:grid}.full-refresh-copy .refresh-type-heading{justify-content:flex-start}.full-refresh-copy p{color:#44505d;margin:10px 0 14px}.recommended-badge,.refresh-order{color:#fff;background:#40566f;border:1px solid #40566f;justify-content:center;align-items:center;min-width:26px;height:24px;padding:0 7px;font-size:11px;font-weight:800;display:inline-flex}.refresh-order{color:#40566f;background:#fff;border-radius:50%;min-width:24px;padding:0}.refresh-dependency-flow{align-items:stretch;gap:4px;min-width:0;display:flex}.refresh-flow-item{flex:1;align-items:center;min-width:0;display:flex}.refresh-flow-item>div{background:#fff;border:1px solid #b9c4cf;grid-template-columns:auto 1fr;align-items:center;gap:5px 7px;width:100%;min-height:58px;padding:8px;display:grid}.refresh-flow-item>div>small{color:#fff;background:#40566f;border-radius:50%;grid-row:1/3;justify-content:center;align-items:center;width:22px;height:22px;font-weight:800;display:inline-flex}.refresh-flow-item>div>strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.refresh-flow-arrow{color:#65788a;flex:none;padding:0 4px;font-size:17px;font-weight:900}.full-refresh-note{color:#555;margin-top:10px;display:block}.full-refresh-actions{border-left:1px solid #b9c4cf;flex-direction:column;justify-content:center;align-items:stretch;gap:8px;padding-left:18px;display:flex}.full-refresh-actions span{color:#555;text-align:center}.individual-refresh-heading{border-top:1px solid #d0d0d0;align-items:baseline;gap:10px;padding:14px 14px 0;display:flex}.individual-refresh-heading span{color:#666}.refresh-type-card{background:#fff;border:1px solid #c9c9c9;flex-direction:column;min-width:0;min-height:260px;padding:14px;display:flex}.refresh-type-card.unavailable{background:#f7f7f7}.refresh-type-heading{justify-content:flex-start;align-items:center;gap:8px;display:flex}.refresh-type-heading strong{margin-right:auto;font-size:15px}.refresh-type-card p{color:#555;min-height:38px;margin:10px 0;line-height:1.45}.refresh-type-card ol{color:#444;flex:1;margin:0 0 12px;padding-left:22px;line-height:1.65}.refresh-dependency-meta{background:#fafafa;border:1px solid #d8d8d8;gap:6px;margin-bottom:10px;padding:9px;display:grid}.refresh-dependency-meta span{color:#555;grid-template-columns:82px 1fr;gap:6px;display:grid}.refresh-dependency-meta b{color:#333}.refresh-state-reason{color:#7c4218;background:#fff7ed;border-left:3px solid #a8612a;margin-bottom:8px;padding:8px;line-height:1.4}.refresh-step-list{color:#44505d;flex:1;margin-bottom:10px}.refresh-step-list summary{cursor:pointer;font-weight:700}.refresh-step-list ol{margin-top:7px;margin-bottom:0}.master-data-state{color:#444;white-space:nowrap;background:#f1f1f1;border:1px solid #777;align-items:center;min-height:23px;padding:0 7px;font-size:11px;font-weight:800;display:inline-flex}.master-data-state.current{color:#1b5e20;background:#e8f5e9;border-color:#2e7d32}.master-data-state.stale,.master-data-state.needs_refresh{color:#8a4518;background:#fff3e8;border-color:#a8612a}.master-data-state.missing{color:#b42318;background:#fff4f2;border-color:#b42318}.master-data-state.optional{color:#44505d;background:#f1f3f5;border-color:#7d8792}.refresh-type-card .btn{width:100%}.api-call-badge{color:#44505d;white-space:nowrap;background:#f1f3f5;border:1px solid #7d8792;align-items:center;min-height:23px;padding:0 7px;font-size:11px;font-weight:700;display:inline-flex}.api-call-badge.external{color:#8a4518;background:#fff3e8;border-color:#a8612a}.refresh-unavailable{color:#8f1e15;background:#fff4f2;border:1px solid #d6a29e;margin-bottom:10px;padding:8px;line-height:1.4}.refresh-job-header{justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.refresh-job-header>div{align-items:center;gap:10px;display:flex}.refresh-job-header small{color:#777;font-family:Consolas,Monaco,monospace}.refresh-progress{background:#ededed;border:1px solid #bcbcbc;height:8px;margin:0 14px 12px;overflow:hidden}.refresh-progress span{background:#40566f;height:100%;transition:width .18s linear;display:block}.refresh-job-summary{border-top:1px solid #d8d8d8;grid-template-columns:repeat(5,minmax(0,1fr))}.refresh-step-table td:first-child,.refresh-step-table td:nth-child(2),.refresh-step-table td:nth-child(4){white-space:nowrap}.step-error{color:#a61b12;white-space:normal;max-width:680px;margin-top:4px;display:block}.step-result summary{color:#315f9b;cursor:pointer;font-weight:700}.step-result pre{color:#333;white-space:pre-wrap;word-break:break-word;background:#f7f7f7;border:1px solid #d1d5db;max-width:720px;max-height:260px;margin:8px 0 0;padding:8px;font-size:11px;overflow:auto}.refresh-history-table tbody tr{cursor:pointer}.refresh-history-table tbody tr:hover,.refresh-history-table tbody tr.selected{background:#eef3f8}.refresh-history-error{text-overflow:ellipsis;white-space:nowrap;max-width:420px;overflow:hidden}.status-badge.refresh-running{color:#234a78;background:#edf5ff;border-color:#315f9b}.status-badge.refresh-queued,.status-badge.refresh-pending{color:#44505d;background:#f1f3f5;border-color:#7d8792}.status-badge.refresh-succeeded{color:#1b5e20;background:#e8f5e9;border-color:#2e7d32}.status-badge.refresh-failed{color:#b42318;background:#fff4f2;border-color:#b42318}.status-badge.refresh-cancelled,.status-badge.refresh-skipped{color:#444;background:#ededed;border-color:#777}@media (width<=980px){.master-source-summary,.master-source-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.master-release-compare{grid-template-columns:1fr}.master-release-transition{min-height:28px;transform:rotate(90deg)}.master-release-diff-header{flex-direction:column;align-items:flex-start}}@media (width<=620px){.master-source-summary,.master-source-grid,.master-release-card dl{grid-template-columns:1fr}.release-diff-counts{width:100%}.release-diff-counts button{flex:1}}code{font-family:Consolas,Monaco,monospace;font-size:12px}.qa-runtime-hero{border-left:4px solid #b7791f;align-items:center;gap:22px;display:flex}.qa-runtime-hero.healthy{border-left-color:#23845e}.qa-runtime-hero>div:first-child{min-width:180px}.qa-runtime-hero>div:first-child strong,.qa-runtime-hero>div:first-child small{display:block}.qa-runtime-hero>div:first-child strong{margin:7px 0 3px;font-size:18px}.qa-runtime-hero>div:first-child small{color:#687780;font-size:11px}.qa-runtime-summary{flex:1}.qa-lane-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.qa-lane-card{border-top:3px solid #cf9c42}.qa-lane-card.healthy{border-top-color:#3a9977}.qa-lane-heading,.qa-lane-heading>div,.qa-lane-footer{justify-content:space-between;align-items:center;gap:8px;display:flex}.qa-lane-heading strong{margin-left:7px;font-size:15px}.qa-lane-status{color:#8d5b12;background:#fff2d9;border-radius:99px;padding:4px 8px;font-size:10px;font-weight:800}.qa-lane-status.running{color:#17684c;background:#e7f6ef}.qa-progress-track{background:#e9edef;border-radius:9px;height:7px;margin:18px 0;overflow:hidden}.qa-progress-track span{border-radius:inherit;background:#378b6c;height:100%;display:block}.qa-lane-counts{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.qa-lane-counts div{background:#f6f8f8;border-radius:7px;padding:9px}.qa-lane-counts span,.qa-lane-counts strong{display:block}.qa-lane-counts span{color:#74818a;font-size:10px}.qa-lane-counts strong{margin-top:3px;font-size:13px}.qa-lane-footer{color:#69767e;margin-top:14px;font-size:10px}.qa-load-guard{color:#79520f;background:#fff8e8;border:1px solid #e1bd7b;border-radius:7px;gap:3px;margin-top:12px;padding:9px;display:grid}.qa-load-guard.service_overload{color:#962c23;background:#fff2f0;border-color:#e5aaa4}.qa-load-guard strong,.qa-load-guard span,.qa-load-guard small{display:block}.qa-load-guard span,.qa-load-guard small{font-size:10px}.qa-policy-note{margin-top:14px}.master-validation-panel{background:#f7fbf9;border:1px solid #cfe2d9;border-radius:10px;margin:14px 0;padding:16px}.master-validation-panel.blocked{background:#fff7f6;border-color:#efb8b2}.master-validation-summary{margin-top:12px}.master-validation-blockers{color:#8d2d23;background:#fff0ee;border-radius:8px;margin-top:12px;padding:12px}.master-validation-blockers ul{margin:7px 0 0;padding-left:18px}.master-validation-issues{margin-top:10px}.master-validation-issues pre{color:#e7eeef;background:#172027;border-radius:7px;max-height:260px;padding:12px;font-size:10px;overflow:auto}.map-pattern-layout{grid-template-columns:minmax(260px,.75fr) minmax(480px,1.6fr);gap:12px;display:grid}.map-pattern-toolbar{grid-template-columns:minmax(180px,1fr) minmax(220px,1fr) auto minmax(150px,.55fr);display:grid}.map-pattern-toolbar .btn{white-space:nowrap}.map-pattern-toolbar .toolbar-meta{overflow-wrap:anywhere;min-width:0;margin-left:0}.map-pattern-list{max-height:720px;overflow:auto}.map-pattern-list>button{color:#27343c;text-align:left;cursor:pointer;background:#fff;border:1px solid #dce2e4;border-radius:8px;width:100%;margin-top:7px;padding:11px;display:block}.map-pattern-list>button:hover,.map-pattern-list>button.active{background:#edf7f2;border-color:#4a8a72}.map-pattern-list strong,.map-pattern-list span,.map-pattern-list small{display:block}.map-pattern-list span{margin-top:5px;font-size:11px}.map-pattern-list small{color:#738087;margin-top:3px;font-size:9px}.admin-page-crash{border-color:#efb8b2;max-width:760px;margin:36px auto}.admin-page-crash p{color:#66757d}.admin-page-crash details{margin:14px 0}.admin-page-crash code{color:#9a2e26;background:#f5f7f7;border-radius:6px;margin-top:8px;padding:10px;display:block}@media (width<=1180px){.lnb{flex-basis:200px;width:200px}.content{padding:14px}.live-map-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));overflow-x:visible}.qa-lane-grid,.map-pattern-layout{grid-template-columns:1fr}.map-pattern-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.qa-runtime-hero{flex-direction:column;align-items:flex-start}.qa-runtime-summary{width:100%}}
