:root{--blue:#0964d8;--blue-dark:#074fae;--blue-soft:#eaf2fd;--ink:#172b43;--muted:#6b7c90;--line:#e3e9f0;--surface:#f4f7fb;--green:#158066;--shadow:0 8px 32px #18375412;--radius:14px;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);font-size:14px;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--surface)}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}button,a,input,select,summary{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #539bff}a{color:var(--blue)}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1{font-size:29px;letter-spacing:-.8px;line-height:1.25;margin-bottom:8px;font-weight:650}h2{font-size:20px;letter-spacing:-.4px;font-weight:650}h3{font-size:15px}p{line-height:1.65}small{font-size:12px}button{border:0}label{font-weight:550}input,select{border:1px solid #d3dde8;border-radius:8px;padding:11px 12px;background:#fff;color:var(--ink);min-width:0;line-height:1.4}input::placeholder{color:#93a1b1}input:hover,select:hover{border-color:#a8bacd}input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px #0964d813}input[type=checkbox]{accent-color:var(--blue);width:17px;height:17px;padding:0;flex-shrink:0}input[aria-invalid=true]{border-color:#d43c42}select{appearance:auto}input:disabled,select:disabled{background:#f3f6fa;color:#7d8c9e}fieldset{border:0;padding:0;margin:26px 0 0}legend{font-size:16px;font-weight:650;padding:0}legend .count{margin-left:7px}.icon{width:20px;height:20px;flex-shrink:0;display:inline-block;vertical-align:middle}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:10px 16px;border:1px solid transparent;border-radius:8px;font-weight:600;text-decoration:none;white-space:nowrap;transition:background .15s,box-shadow .15s}.button .icon{width:18px;height:18px}.primary{color:#fff;background:var(--blue);box-shadow:0 3px 7px #0860ce19}.primary:hover{background:var(--blue-dark)}.secondary{background:#fff;border-color:#d6e0eb;color:#3d526c}.secondary:hover{background:#f3f7fc;border-color:#a9bbd1}.danger{background:#ce3541;color:#fff}.danger:hover{background:#ae2630}.text-danger{background:transparent;color:#ae434d;font-size:13px;padding-right:0}.text-danger:hover{color:#c32838}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:transparent;color:#5e7088;flex-shrink:0}.icon-button:hover{background:#edf3fa;color:var(--blue)}.eyebrow{font-size:10px;font-weight:700;letter-spacing:1.65px;color:var(--blue);margin-bottom:9px}.muted{color:var(--muted)}.lead{font-size:16px}.badge{display:inline-flex;align-items:center;gap:5px;border-radius:5px;padding:5px 8px;line-height:1.3;font-size:11px;font-weight:600;white-space:nowrap}.badge-blue{background:var(--blue-soft);color:#175eab}.badge-green{background:#e9f6ee;color:#24704b}.badge-orange{background:#fff2e0;color:#9b681e}.badge-purple{background:#f0ebfb;color:#7753ad}.badge-gray{background:#eef1f6;color:#6c7a8d}.badge-red{background:#fff0ef;color:#ae454b}.count{font-size:11px;line-height:22px;min-width:24px;padding:0 7px;border-radius:6px;background:#edf3fa;color:#637b98;display:inline-block;text-align:center}.brand-logo{display:block;position:relative;overflow:hidden;width:282px;height:38px;flex-shrink:0}.brand-logo img{position:absolute;max-width:none;width:350px;height:auto;left:-34px;top:-68px}.brand{text-decoration:none;display:flex;align-items:center}.stack{display:flex;flex-direction:column;gap:9px}.stack label:not(:first-child){margin-top:9px}.form-row{display:flex;gap:14px}.form-row>div{display:flex;flex:1;flex-direction:column;gap:8px}.form-row .port-field{flex:0 0 95px}.notice{border:1px solid #dce7f4;background:#f3f8fe;border-radius:9px;padding:13px 15px;line-height:1.65;font-size:13px;color:#496780}.notice .icon{width:17px;height:17px;margin-right:5px}.notice.error{background:#fff4f3;border-color:#f2cfcc;color:#ae3b42}.notice.success{background:#edf8f2;border-color:#cee8dc;color:var(--green)}.form-divider{height:1px;background:var(--line);margin:16px 0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:absolute;left:12px;top:-100px;z-index:9999;background:#fff;padding:12px}.skip-link:focus{top:12px}
/* Shared application shell */
.app-header{height:78px;padding:0 30px;display:flex;align-items:center;gap:38px;background:#fff;border-bottom:1px solid var(--line)}.primary-tabs{height:100%;display:flex;align-items:stretch;gap:12px}.primary-tab{min-width:98px;padding:0 20px;background:transparent;color:#7a8b9e;font-size:15px;font-weight:600;position:relative;display:flex;gap:9px;align-items:center;justify-content:center}.primary-tab.active{color:var(--blue)}.primary-tab.active:after{content:"";position:absolute;height:3px;border-radius:3px 3px 0 0;left:12px;right:12px;bottom:0;background:var(--blue)}.primary-tab:hover{background:#f6f9fd}.header-tools{margin-left:auto;display:flex;gap:5px;align-items:center}.header-tools form{display:flex;margin:0}.demo-label{display:inline-flex;align-items:center;gap:7px;color:#7b8798;font-size:11px;letter-spacing:.05px;margin-right:20px;white-space:nowrap}.demo-label>span{width:6px;height:6px;background:#dbac56;border-radius:50%}.page{padding:26px 30px 0;max-width:2000px;margin:auto}.workspace-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:24px;min-height:79px}.workspace-heading p{margin-bottom:0;color:#7a8b9f;font-size:13px}.heading-actions{display:flex;align-items:center;gap:20px}.sync-indicator{display:flex;align-items:center;gap:7px;color:#6e8297;font-size:11px;white-space:nowrap}.sync-dot{width:6px;height:6px;border-radius:50%;background:#28a286;box-shadow:0 0 0 4px #28a28612}.sync-dot.waiting{background:#d7a346;box-shadow:0 0 0 4px #d7a34612}.sync-dot.offline{background:#c65a65;box-shadow:0 0 0 4px #c65a6512}.workspace-footer{min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:10px;color:#8997a8}.workspace-footer span:last-child{white-space:nowrap}
/* Geographic workspace */
.gis-layout{display:grid;grid-template-columns:278px minmax(0,1fr);height:calc(100dvh - 251px);min-height:550px;border:1px solid #dfe6ee;border-radius:14px;overflow:hidden;background:#fff;box-shadow:var(--shadow)}.gis-sidebar{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line);z-index:2;background:#fff}.sidebar-top{padding:23px 20px 17px}.sidebar-top h2{font-size:15px;display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.search-field{display:flex;align-items:center;position:relative}.search-field>.icon{position:absolute;left:12px;width:16px;height:16px;color:#8c9eb2;pointer-events:none}.search-field input{width:100%;padding:10px 12px 10px 36px;font-size:12px;background:#f8fafc;border-color:#e5ebf2;border-radius:8px}.layer-filters{padding:0 20px 18px;border-bottom:1px solid var(--line)}.section-label{font-size:9px;letter-spacing:1.2px;font-weight:700;color:#8a9bad}.layer-filters>.section-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.section-label .icon{width:13px;height:13px}.layer-filters>label{display:flex;align-items:center;gap:9px;position:relative;padding:6px 0;font-size:12px;font-weight:500;cursor:pointer}.layer-filters>label>span:nth-child(2){flex:1;display:flex;justify-content:space-between;align-items:center;gap:6px;margin-right:10px}.layer-filters small{color:#92a2b3;font-size:11px;font-weight:500}.category-icon{width:29px;height:29px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.category-icon .icon{width:16px;height:16px}.category-icon.pruga{background:#eaf2ff;color:#247ce6}.category-icon.skretnica{background:#fff1dc;color:#c58b31}.category-icon.kolodvor{background:#e4f6f2;color:#198e79}.layer-filters input{position:absolute;right:0;opacity:0;width:30px;height:22px;cursor:pointer}.toggle{height:16px;width:28px;border-radius:10px;background:#c8d2dd;pointer-events:none;transition:.15s;position:relative}.toggle:after{position:absolute;content:"";width:12px;height:12px;border-radius:50%;background:#fff;left:2px;top:2px;box-shadow:0 1px 2px #0002;transition:.15s}.layer-filters input:checked+.toggle{background:#4284d8}.layer-filters input:checked+.toggle:after{transform:translateX(12px)}.layer-filters input:focus-visible+.toggle{outline:3px solid #8bbafa;outline-offset:3px}.object-list-heading{padding:19px 20px 10px}.object-list{flex:1;overflow:auto;padding:0 9px 10px}.object-list-item{width:100%;background:#fff;display:flex;align-items:center;gap:10px;border-radius:9px;padding:12px 10px;text-align:left;color:var(--ink);margin:2px 0;position:relative;border:1px solid transparent}.object-list-item:hover{background:#f6f9fd}.object-list-item.selected{background:#edf4ff;border-color:#d7e6fc}.object-list-item.selected:before{content:"";position:absolute;left:-10px;top:17px;bottom:17px;width:3px;background:var(--blue);border-radius:0 4px 4px 0}.object-list-item .category-icon{width:30px;height:32px;background:transparent}.object-name{display:block;font-weight:600;font-size:11px;line-height:1.55}.object-id{display:block;font-family:Consolas,monospace;color:#8b9aab;font-size:9px;line-height:1.8;letter-spacing:.1px}.object-list-item.selected .object-id{color:#7491b6}.object-dot{margin-left:auto;width:5px;height:5px;border-radius:50%;background:#56aa99;flex-shrink:0}.object-dot.unlinked{background:#ceae77}.sidebar-foot{display:flex;align-items:flex-start;gap:8px;border-top:1px solid var(--line);padding:15px 19px;background:#fcfdff}.sidebar-foot>.icon{width:15px;height:15px;color:#9aadc4;margin-top:2px}.sidebar-foot p{color:#8d9daf;font-size:10px;line-height:1.7;margin-bottom:0}.map-stage{position:relative;isolation:isolate;background:#244854;min-width:0}#map{position:absolute;inset:0;background:#294f5b;z-index:0;min-height:100%;font-family:inherit}.leaflet-container{font:inherit}.leaflet-tile-pane{filter:saturate(.67) brightness(.83)}.map-tag{position:absolute;top:20px;left:20px;z-index:400;display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #ffffff40;background:#fefefef0;border-radius:8px;font-size:10px;color:#567087;box-shadow:0 2px 8px #172b4320;pointer-events:none}.map-tag>.icon{width:14px;height:14px;color:#7e94a8}.map-tag-divider{height:12px;width:1px;background:#d3dce4;margin:0 2px}.map-legend{position:absolute;left:20px;bottom:42px;display:flex;align-items:center;gap:8px;background:#fffef6f5;border:1px solid #ffffff50;box-shadow:0 3px 12px #18303a18;border-radius:7px;padding:11px 13px;color:#5a6e82;font-size:9px;z-index:400;pointer-events:none}.legend-line{width:18px;height:3px;background:#64b7ff;border-radius:2px;margin-right:1px}.legend-switch{width:8px;height:8px;background:#eeb55a;transform:rotate(45deg);margin-left:7px;margin-right:3px}.legend-station{width:9px;height:9px;border:2px solid #62d6c1;border-radius:50%;margin-left:7px;margin-right:2px}.map-tip{position:absolute;bottom:6px;left:20px;z-index:400;display:flex;align-items:center;gap:5px;color:#e8f2f6b0;font-size:9px;pointer-events:none}.map-tip .icon{width:12px;height:12px}.leaflet-control-zoom{margin-left:20px!important;margin-bottom:110px!important;border:0!important;box-shadow:0 3px 12px #10293830!important;border-radius:8px!important;overflow:hidden}.leaflet-control-zoom a{color:#53697e!important;font-size:19px!important;width:33px!important;height:33px!important;line-height:33px!important;border-color:#e1e7ed!important}.leaflet-control-scale{margin-left:20px!important;margin-bottom:17px!important}.leaflet-control-scale-line{background:#ffffffb0!important;font-size:9px!important;border-color:#536b7c!important;color:#40586a!important}.leaflet-control-attribution{font-size:8px!important;background:#ffffffd9!important;max-width:80%;text-align:right;padding:3px 6px!important}.leaflet-control-attribution a{color:#526c86}.leaflet-bottom.leaflet-right{display:flex;justify-content:flex-end;width:100%;pointer-events:none}.leaflet-control-attribution{pointer-events:auto}.place-label{font-size:10px;font-weight:500;color:#edf4f3;text-align:center;text-shadow:0 1px 3px #142e3a,0 -1px 3px #142e3a,1px 0 3px #142e3a;white-space:nowrap;background:transparent;pointer-events:none}.place-label.major{font-size:10px;letter-spacing:1.8px;font-weight:650;color:#ffffffbf}.station-marker,.switch-marker{background:transparent;border:0}.marker-station{display:block;width:22px;height:22px;border-radius:7px;background:#ecfffa;border:2px solid #159f87;box-shadow:0 2px 8px #0e333960;color:#159479;transform:rotate(0deg);padding:2px}.marker-station .icon{width:14px;height:14px;display:block}.marker-station.unlinked{border-color:#daaa52;background:#fff9e9;color:#b98225}.marker-switch{width:14px;height:14px;display:block;background:#f4c675;border:2px solid #fff2d8;transform:rotate(45deg);border-radius:3px;box-shadow:0 2px 6px #152c3a80}.station-marker.selected .marker-station{box-shadow:0 0 0 5px #6ee7cb44,0 4px 12px #112c3980}.switch-marker.selected .marker-switch{box-shadow:0 0 0 5px #f5cc8344}.leaflet-tooltip{border:0!important;border-radius:6px!important;box-shadow:0 3px 12px #19334a20!important;font-size:11px!important;color:var(--ink)!important;padding:8px 11px!important}.context-menu-popup .leaflet-popup-content-wrapper{border-radius:9px;padding:0}.context-menu-popup .leaflet-popup-content{margin:5px}.context-create{display:flex;align-items:center;gap:8px;background:#fff;color:var(--blue);padding:10px 14px;border-radius:6px;font-weight:600;font-size:12px}.context-create:hover{background:#edf4fd}.context-create .icon{width:16px;height:16px}.map-alert{position:absolute;top:69px;left:20px;right:352px;z-index:405;background:#fff6e9;border:1px solid #f1d09a;border-radius:7px;padding:10px 12px;font-size:11px;color:#866328;line-height:1.6}.object-panel{position:absolute;right:18px;top:20px;z-index:410;width:304px;border-radius:12px;background:#fff;box-shadow:0 8px 32px #122c3c30;overflow:hidden;max-height:calc(100% - 48px);overflow-y:auto}.panel-heading{padding:20px 20px 17px;display:flex;justify-content:space-between;align-items:flex-start;gap:6px;border-bottom:1px solid var(--line)}.panel-heading .eyebrow{font-size:8px;color:#94a4b7;letter-spacing:1.3px;margin-bottom:7px}.panel-heading h2{font-size:18px;margin-bottom:0}.panel-heading .category-icon{width:32px;height:32px;margin-bottom:12px}.panel-heading .icon-button{width:25px;height:25px;margin-top:-4px;margin-right:-5px}.panel-heading .icon-button .icon{width:15px;height:15px}.panel-id{padding:14px 20px;background:#fafcff;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.panel-id small{display:block;font-size:8px;letter-spacing:1px;color:#94a4b6;margin-bottom:5px}.panel-id code{font-family:Consolas,monospace;font-size:12px;color:#46647f}.panel-id button{height:30px;width:30px}.panel-id .icon{width:15px;height:15px}.panel-source{display:flex;align-items:center;gap:5px;font-size:9px;color:#6d9d8c;padding:15px 20px 3px}.panel-source .icon{width:11px;height:11px}.panel-attributes{padding:0 20px;margin:0}.panel-attributes>div{padding:12px 0;border-bottom:1px solid #eef2f7}.panel-attributes>div:last-child{border:0}.panel-attributes dt{font-size:9px;color:#8b9aab;margin-bottom:6px}.panel-attributes dd{font-size:12px;color:#344c65;margin:0;font-weight:550;line-height:1.5}.panel-attributes .badge{font-size:10px}.panel-action{padding:15px 20px 20px}.panel-action .button{font-size:11px;width:100%;min-height:36px}.panel-action .button .icon{width:14px;height:14px}.unlinked-info{padding:23px 20px 8px}.unlinked-info .icon{color:#c39647;width:25px;height:25px;margin-bottom:10px}.unlinked-info h3{font-size:12px;line-height:1.6;margin-bottom:8px}.unlinked-info p{font-size:11px;color:#8b99a8;line-height:1.8;margin-bottom:10px}.loading-message,.empty-message{font-size:11px;color:#8a9caf;padding:26px 14px;text-align:center;line-height:1.8}.spinner{display:inline-block;width:14px;height:14px;border:2px solid #dce8f6;border-top-color:var(--blue);border-radius:50%;vertical-align:middle;animation:spin .8s linear infinite;margin-right:5px}@keyframes spin{to{transform:rotate(360deg)}}
/* SAP workspace */
.sap-page{padding-bottom:30px}.sap-info{display:flex;align-items:center;gap:11px;padding:13px 16px;border:1px solid #dde8f6;border-radius:10px;background:#eef5fd;color:#68829d;font-size:11px;margin-bottom:22px}.sap-info>.icon{color:#6092c9;width:17px;height:17px}.sap-info strong{font-weight:600;color:#3b6693}.subtle-label{margin-left:auto;color:#92a6bf;font-size:10px;white-space:nowrap}.table-card{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 5px 22px #17375605;overflow:hidden}.table-toolbar{display:flex;align-items:center;gap:22px;padding:21px 23px}.table-toolbar .search-field{width:340px;max-width:40%}.table-toolbar .search-field input{height:41px;background:#fff}.category-filter{display:flex;align-items:center;gap:10px;color:#8c9bad;font-size:11px;font-weight:400}.category-filter select{font-size:11px;padding:10px 28px 10px 12px;min-width:140px;border-color:#e3e9f0}.record-total{color:#8a9aac;font-size:11px;margin-left:auto;white-space:nowrap}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap}thead{background:#f9fbfd}th{font-size:10px;color:#8294aa;font-weight:550;letter-spacing:.15px;padding:15px 17px;border-bottom:1px solid var(--line);border-top:1px solid var(--line)}th:first-child,td:first-child{padding-left:23px}th:last-child,td:last-child{padding-right:23px}td{padding:20px 17px;border-bottom:1px solid #edf1f6;font-size:11px;color:#60758d}tbody tr:hover{background:#fcfdff}tbody tr:last-child td{border-bottom:0}.asset-cell{display:flex;align-items:center;gap:12px}.asset-cell .category-icon{width:35px;height:37px}.asset-cell strong{font-size:12px;color:#324b65;font-weight:600;display:block;line-height:1.6}.asset-cell small{font-size:10px;color:#99a7b7;display:block;line-height:1.8}td code{font-size:10px;font-family:Consolas,monospace;color:#6483a5}.link-indicator{display:inline-flex;gap:6px;align-items:center;font-size:10px;color:#5a9e86}.link-indicator>.icon{width:13px;height:13px}.link-indicator.unlinked{color:#b59460}.edit-asset{min-height:31px;border-color:#e3eaf2;color:#6b85a2;font-size:10px;padding:7px 10px;background:#fff}.edit-asset .icon{width:12px;height:12px}.table-foot{display:flex;justify-content:space-between;gap:15px;padding:16px 23px;background:#fcfdff;border-top:1px solid var(--line);font-size:10px;color:#95a4b5}.sap-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 1px}.sap-bottom>span{display:flex;gap:7px;align-items:center;color:#93a0b1;font-size:10px}.sap-bottom>span>.icon{width:13px;height:13px}.sap-bottom .button{font-size:11px}.sap-bottom .button .icon{width:14px;height:14px}.empty-cell{text-align:center;padding:65px 24px!important;color:#8b9bad;font-size:12px;line-height:1.8}
/* Dialogs, forms and feedback */
dialog{padding:0;border:1px solid #dde6f0;border-radius:15px;color:var(--ink);background:#fff;max-height:calc(100dvh - 50px);box-shadow:0 20px 80px #112d4e38}dialog::backdrop{background:#102b4b55;backdrop-filter:blur(3px)}.asset-dialog{width:min(850px,calc(100% - 34px))}.dialog-header{padding:25px 29px 20px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.dialog-header h2{margin-bottom:6px}.dialog-header p{color:#8c9bac;font-size:12px;margin-bottom:0}.dialog-header .eyebrow{font-size:9px;margin-bottom:8px}.dialog-body{padding:23px 29px;overflow-y:auto;max-height:calc(100dvh - 252px)}.dialog-body>.notice{margin-bottom:20px}.dialog-footer{padding:18px 29px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:flex-end;gap:10px;background:#fbfcfe}.form-save-note{font-size:10px;color:#95a5b8;margin-right:auto;max-width:260px;line-height:1.65}.dialog-footer .button{font-size:12px}.link-zone{background:#f5f8fd;border:1px solid #e3ebf5;border-radius:10px;padding:19px 20px;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:10px 25px}.link-zone>.field:first-child{grid-column:1}.category-form-field{grid-column:2;grid-row:1}.field{display:flex;flex-direction:column;gap:8px;min-width:0}.field label{font-size:11px;color:#536c85;font-weight:600;display:flex;justify-content:space-between;gap:9px;align-items:center}.field-hint{font-size:8px;color:#88a0ba;font-weight:400}.field input,.field select{font-size:12px;padding:10px 11px;width:100%;height:40px}.input-action{display:flex;gap:7px;align-items:stretch}.input-action .button{font-size:10px;padding:9px 11px}.field-feedback{font-size:10px;color:#93a3b5;line-height:1.65;min-height:16px}.field-feedback.error{color:#bc525b}.field-feedback.success{color:#3b9581}.checkbox-label{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:450;color:#7c91a8;grid-column:1/-1;cursor:pointer}.checkbox-label input{height:14px;width:14px}.attribute-note{display:flex;align-items:center;gap:6px;color:#96a6b9;font-size:10px;margin:10px 0 22px}.attribute-note>.icon{width:13px;height:13px;color:#89a5c6}.attribute-grid{display:grid;grid-template-columns:1fr 1fr;gap:19px 24px}.gis-field-tag{font-size:8px;color:#809bbb;display:inline-flex;gap:4px;align-items:center;font-weight:450;white-space:nowrap}.gis-field-tag>.icon{height:11px;width:11px}.field-error{font-size:10px;color:#b34d57;line-height:1.5}.attribute-placeholder{display:flex;align-items:center;justify-content:center;flex-direction:column;padding:36px 10px 8px;color:#9baabc;text-align:center;font-size:11px}.attribute-placeholder>.icon{width:28px;height:28px;color:#b6c6d8;margin-bottom:13px}.confirm-dialog{padding:28px;width:min(455px,calc(100% - 32px))}.confirm-icon{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff2e3;color:#c68d3a;margin-bottom:20px}.confirm-dialog h2{font-size:21px}.confirm-dialog p{font-size:13px;color:#7d8fa2;line-height:1.9}.confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:28px}.password-dialog{width:min(460px,calc(100% - 32px))}.password-dialog .dialog-header{padding:24px}.password-dialog .dialog-body{padding:24px}.password-dialog label{font-size:12px}.password-dialog .dialog-footer{padding:18px 24px}.password-dialog .muted{font-size:12px;margin-bottom:4px}.password-dialog .notice{margin-bottom:8px}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:3000;background:#183c55;color:#fff;padding:14px 21px;border-radius:10px;box-shadow:0 7px 30px #152f5530;font-size:12px;line-height:1.6;max-width:calc(100% - 32px);text-align:center}.toast.error{background:#a54049}.noscript{position:fixed;inset:0;z-index:5000;background:#fff;padding:60px;display:flex;justify-content:center;align-items:center;text-align:center;font-size:18px}
/* Password and installation pages */
.auth-body{min-height:100dvh;display:flex;align-items:center;justify-content:center;background:#f1f5fa;padding:45px}.auth-shell{width:min(1100px,100%);display:grid;grid-template-columns:1.05fr 1fr;min-height:650px;border-radius:22px;overflow:hidden;background:#fff;box-shadow:0 16px 70px #123b6010}.auth-story{position:relative;background:#113b64;padding:59px 46px;color:#fff;overflow:hidden}.auth-story .eyebrow{color:#6dafec;letter-spacing:2.2px;font-size:10px}.auth-story h1{font-size:43px;line-height:1.17;letter-spacing:-1.5px;font-weight:600;margin-top:31px;margin-bottom:23px}.auth-story p{font-size:13px;color:#b3ccdf;line-height:1.9}.story-foot{font-size:9px;color:#769ab8;position:absolute;bottom:29px;left:46px;right:35px;letter-spacing:.25px}.rail-illustration{position:absolute;left:0;right:0;bottom:57px;height:220px;opacity:.85;background:radial-gradient(ellipse at 60% 50%,#2b70944f,transparent 65%)}.rail-path{position:absolute;border:1px solid #70a9ce55;border-radius:28px}.path-a{width:225px;height:112px;left:130px;top:53px;transform:rotate(-28deg);border-left-width:3px;border-top-width:3px;border-right-color:transparent;border-bottom-color:transparent}.path-b{width:160px;height:127px;left:175px;top:76px;transform:rotate(35deg);border-left-width:3px;border-top-color:transparent;border-bottom-color:transparent;border-right-color:transparent}.rail-node{width:9px;height:9px;background:#87c9ee;border:2px solid #d1eeff;border-radius:50%;position:absolute;box-shadow:0 0 0 6px #6abce819;z-index:2}.node-a{left:197px;top:51px}.node-b{left:116px;top:147px}.node-c{left:274px;top:182px}.node-d{left:376px;top:45px}.rail-city{position:absolute;letter-spacing:1.8px;font-size:8px;color:#b7d1e2}.city-a{left:167px;top:26px}.city-b{left:66px;top:160px}.city-c{left:294px;top:190px}.city-d{left:395px;top:47px}.auth-card{padding:43px 40px 0;display:flex;flex-direction:column;min-width:0}.auth-card>.brand-logo{margin:0 auto}.auth-card-content{padding:54px 7px 30px;flex:1}.auth-card-content>.badge{font-size:9px;margin-bottom:21px}.auth-card h2{font-size:25px;line-height:1.35;letter-spacing:-.7px;margin-bottom:16px}.auth-card p{font-size:12px}.auth-card .notice{margin:18px 0}.auth-card .stack{margin-top:29px}.auth-card .stack label{font-size:12px}.auth-card input{height:45px}.auth-submit{margin-top:13px;width:100%;justify-content:space-between;padding-left:18px;padding-right:16px;height:44px;font-size:12px}.auth-note{border-top:1px solid #edf1f6;display:flex;gap:9px;padding-top:22px;margin-top:28px;color:#98a8ba;font-size:10px;line-height:1.8}.auth-note .icon{width:17px;height:17px;color:#8facc9;margin-top:3px}.auth-card-foot{border-top:1px solid var(--line);padding:20px 0;display:flex;justify-content:space-between;color:#a0adbc;font-size:9px}.install-body{background:#f5f8fc}.install-header{height:92px;padding:0 max(30px,calc((100% - 1100px)/2));display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line)}.install-shell{max-width:1100px;margin:50px auto;padding:0 20px}.install-shell>.lead{font-size:14px}.install-grid{display:grid;grid-template-columns:1fr 1.2fr;gap:70px;margin-top:37px}.install-steps{padding-top:16px}.install-steps ol{list-style:none;counter-reset:step;padding:0;margin:0 0 35px}.install-steps li{counter-increment:step;padding-left:49px;position:relative;padding-bottom:36px}.install-steps li:before{content:counter(step);position:absolute;left:0;top:-2px;width:29px;height:29px;border:1px solid #cfdbeb;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#8da3be;font-size:11px;background:#f5f8fc;z-index:2}.install-steps li:not(:last-child):after{position:absolute;content:"";height:100%;width:1px;background:#e0e7f0;left:14px;top:14px}.install-steps li.active:before{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 0 0 5px #0964d810}.install-steps strong{display:block;font-size:13px;font-weight:600;margin-bottom:9px}.install-steps li span{font-size:12px;line-height:1.85;color:#8a9aaf;display:block}.install-steps>.notice{font-size:11px}.install-form-card{padding:30px;border:1px solid #e2e9f2;border-radius:14px;background:#fff;box-shadow:var(--shadow)}.install-form-card h2{font-size:18px;margin-bottom:24px}.install-form-card>.notice{margin-bottom:22px}.install-form-card label{font-size:11px}.install-form-card input,.install-form-card select{font-size:12px}.install-form-card small{font-size:10px;line-height:1.8}.install-form-card h3{margin-bottom:3px;font-size:13px}.install-form-card details{margin:17px 0;font-size:11px;color:#738ba6;line-height:1.7}.install-form-card summary{cursor:pointer;font-weight:550}.detail-fields{padding-top:12px}.install-form-card form>.button{margin-top:9px;justify-content:space-between;font-size:12px}.requirements{margin-top:28px;padding-top:23px;border-top:1px solid var(--line)}.requirements h3{font-size:11px;color:#94a5b8;margin-bottom:15px}.requirement{display:flex;align-items:center;gap:9px;margin:9px 0;font-size:10px;color:#89a095}.requirement>.icon{width:13px;height:13px;color:#41987d}.requirement.bad,.requirement.bad>.icon{color:#ba5760}.install-footer{text-align:center;font-size:10px;color:#9faec0;padding:10px 20px 30px}.installation-success{max-width:640px;text-align:center;margin:75px auto;line-height:1.8}.success-orb{display:flex;align-items:center;justify-content:center;width:66px;height:66px;background:#e2f5ec;color:#2a9874;border-radius:50%;margin:0 auto 30px}.success-orb .icon{width:30px;height:30px}.installation-success h1{font-size:32px}.installation-success>p{color:#8396ac;font-size:14px}.installation-success>.button{margin:20px 0 32px}.installation-success>.notice{text-align:left;font-size:12px}
@media(min-width:1700px){.gis-layout{grid-template-columns:310px minmax(0,1fr)}.object-panel{width:330px}.object-name{font-size:12px}.panel-attributes dt{font-size:10px}.panel-attributes dd{font-size:13px}}
@media(max-width:1180px){.app-header{padding:0 22px;gap:24px}.demo-label{font-size:10px;margin-right:9px}.brand-logo{width:244px;height:34px}.brand-logo img{width:303px;left:-29px;top:-59px}.primary-tab{min-width:80px;padding:0 13px}.page{padding-left:22px;padding-right:22px}.gis-layout{grid-template-columns:245px minmax(0,1fr)}.sidebar-top{padding-left:16px;padding-right:16px}.layer-filters{padding-left:16px;padding-right:16px}.object-name{font-size:10px}.object-panel{width:275px;right:14px}.map-tag{left:14px;font-size:9px}.map-alert{right:303px;left:14px}.map-legend{font-size:8px;padding:10px;left:14px;gap:6px}.map-tip{left:14px;font-size:8px}.panel-heading{padding:17px}.panel-id{padding:13px 17px}.panel-attributes{padding:0 17px}.panel-action{padding:15px 17px 17px}.heading-actions{gap:15px}.auth-body{padding:30px}.auth-story{padding:50px 35px}.auth-story h1{font-size:38px}.auth-card{padding-left:28px;padding-right:28px}.story-foot{left:35px}.install-grid{gap:40px}.table-toolbar{gap:15px}.category-filter{gap:8px}.category-filter>select{min-width:115px}.category-filter{font-size:10px}th,td{padding-left:12px;padding-right:12px}}
@media(max-width:960px){.demo-label{display:none}.app-header{gap:20px}.workspace-heading{align-items:flex-start}.heading-actions{padding-top:8px;flex-direction:column-reverse;gap:12px;align-items:flex-end}.gis-layout{grid-template-columns:224px minmax(0,1fr)}.object-panel{width:255px}.panel-heading h2{font-size:16px}.panel-attributes>div{padding:10px 0}.panel-attributes dd{font-size:11px}.map-tag{max-width:calc(100% - 28px);padding:9px}.map-tag-divider{display:none}.map-tag>span:last-child:not(#map-provider-label){display:none}.map-legend{gap:5px}.map-alert{right:14px;top:68px;max-width:240px}.table-toolbar{flex-wrap:wrap}.table-toolbar .search-field{width:280px;max-width:55%}.subtle-label{display:none}.auth-shell{min-height:620px}.auth-story h1{font-size:34px}.auth-story p{font-size:12px}.auth-card{padding-left:23px;padding-right:23px}.auth-card h2{font-size:22px}.auth-story{padding-left:30px}.rail-illustration{transform:scale(.8);transform-origin:20% center;right:-60px}.auth-card-content{padding-top:45px}.auth-card-foot{font-size:8px}.install-header{padding:0 25px}.install-grid{gap:25px}.install-form-card{padding:23px}.workspace-footer{font-size:9px}.sap-info{font-size:10px}.workspace-footer span:first-child{max-width:70%;line-height:1.65}}
@media(max-width:800px){.app-header{height:71px;padding:0 17px;gap:13px}.primary-tabs{gap:0}.primary-tab{min-width:67px;font-size:13px;padding:0 10px;gap:6px}.primary-tab .icon{width:17px;height:17px}.header-tools{gap:0}.header-tools .icon-button{width:32px}.brand-logo{width:210px;height:31px}.brand-logo img{width:261px;left:-25px;top:-51px}.page{padding:22px 17px 0}.workspace-heading{margin-bottom:19px}.workspace-heading h1{font-size:25px}.workspace-heading p{font-size:11px}.eyebrow{font-size:8px}.heading-actions .button{font-size:11px;min-height:36px;padding:9px 12px}.sync-indicator{font-size:9px}.gis-layout{display:flex;flex-direction:column;height:auto;min-height:0;overflow:visible}.gis-sidebar{border-right:0;border-radius:13px 13px 0 0;overflow:hidden}.sidebar-top{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px}.sidebar-top h2{margin:0;font-size:13px;gap:10px}.sidebar-top .search-field{width:245px;max-width:55%}.layer-filters{display:flex;gap:14px;padding:0 16px 12px;border-bottom:1px solid var(--line)}.layer-filters>.section-label{display:none}.layer-filters>label{flex:1;font-size:10px;padding:0;gap:6px}.layer-filters>label>span:nth-child(2){margin-right:4px}.layer-filters .category-icon{width:23px;height:26px}.layer-filters .category-icon>.icon{width:13px;height:13px}.object-list-heading{display:none}.object-list{display:flex;padding:9px;gap:7px;overflow-x:auto;flex:none}.object-list-item{width:200px;flex:0 0 200px;margin:0;padding:8px 10px}.object-list-item.selected:before{display:none}.object-list-item .object-name{font-size:10px}.sidebar-foot{display:none}.map-stage{height:640px;border-radius:0 0 13px 13px;overflow:hidden}.object-panel{width:280px}.map-tag{font-size:9px}.map-tag-divider{display:block}.map-legend{font-size:9px;gap:8px;left:16px}.map-tip{font-size:9px;left:16px}.panel-attributes dd{font-size:12px}.workspace-footer{padding:10px 0;min-height:45px;align-items:flex-start;gap:8px}.workspace-footer span:first-child{max-width:64%}.sap-bottom{align-items:flex-start;gap:20px}.sap-bottom>span{line-height:1.8}.table-foot{font-size:9px}.sap-page{padding-bottom:20px}.auth-body{padding:25px}.auth-shell{grid-template-columns:1fr;max-width:470px;min-height:0}.auth-story{display:none}.auth-card{padding:34px 35px 0}.auth-card-content{padding:36px 0 30px}.auth-card h2{font-size:25px}.auth-card>.brand-logo{width:282px;height:38px}.auth-card>.brand-logo img{width:350px;left:-34px;top:-68px}.auth-card-foot{font-size:9px}.install-shell{margin-top:35px}.install-grid{grid-template-columns:1fr;gap:5px}.install-steps ol{display:grid;grid-template-columns:1fr 1fr;gap:0 25px;margin-bottom:0}.install-steps>.notice{margin-bottom:25px}.install-steps li{padding-bottom:25px}.install-steps li:after{display:none}.install-form-card{padding:25px}.install-header .badge{font-size:9px}.install-shell h1{font-size:26px}.install-shell .lead{font-size:12px}.install-steps strong{font-size:12px}.install-steps li span{font-size:11px}.install-steps li{padding-left:40px}}
@media(max-width:540px){.app-header{height:auto;min-height:106px;flex-wrap:wrap;gap:0;padding-top:11px;align-content:space-between}.brand-logo{width:205px;height:30px}.brand-logo img{width:255px;left:-24px;top:-50px}.header-tools{margin-left:auto}.primary-tabs{order:3;flex:0 0 100%;height:43px;margin-top:7px;justify-content:center;border-top:1px solid #f3f6fa}.primary-tab{flex:1;max-width:none}.primary-tab.active:after{left:20px;right:20px}.page{padding:21px 12px 0}.workspace-heading{gap:12px;align-items:center}.workspace-heading h1{font-size:22px;letter-spacing:-.6px;margin-bottom:6px}.workspace-heading p{font-size:10px;max-width:220px;line-height:1.7}.workspace-heading .eyebrow{font-size:7px;letter-spacing:1px}.heading-actions{gap:9px;padding-top:0}.heading-actions .button{font-size:10px;padding:8px 10px;min-height:34px;gap:6px}.heading-actions .button .icon{width:14px;height:14px}.sync-indicator{font-size:8px;gap:5px}.sync-dot{width:5px;height:5px}.sidebar-top{padding:14px 12px}.sidebar-top h2{font-size:12px;gap:8px}.sidebar-top .search-field{max-width:52%}.sidebar-top .search-field input{font-size:10px;padding-top:8px;padding-bottom:8px}.sidebar-top .count{font-size:9px;min-width:19px;line-height:20px;padding:0 4px}.layer-filters{gap:9px;padding:0 12px 12px}.layer-filters .category-icon{display:none}.layer-filters label{font-size:10px;gap:3px}.layer-filters small{font-size:9px}.layer-filters label>span:nth-child(2){gap:4px}.toggle{width:24px;height:14px;flex-shrink:0}.toggle:after{width:10px;height:10px}.layer-filters input:checked+.toggle:after{transform:translateX(10px)}.map-stage{height:740px}.map-tag{top:14px;left:12px;padding:8px 10px;font-size:8px}.map-legend{top:56px;bottom:auto;left:12px;padding:9px;gap:8px;font-size:8px}.map-tip{display:none}.object-panel{top:auto;bottom:29px;right:12px;left:12px;width:auto;max-height:390px;border-radius:10px}.panel-heading{padding:15px 17px;align-items:center}.panel-heading>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.panel-heading .category-icon{margin:0;width:26px;height:26px}.panel-heading .eyebrow{display:none}.panel-heading h2{font-size:15px}.panel-id{padding:10px 17px}.panel-id small{font-size:7px;margin-bottom:3px}.panel-attributes{display:grid;grid-template-columns:1fr 1fr;column-gap:18px}.panel-attributes>div{padding:10px 0}.panel-attributes dt{font-size:8px}.panel-attributes dd{font-size:10px}.panel-attributes .badge{font-size:8px;padding:4px 6px}.panel-source{padding:11px 17px 0;font-size:8px}.panel-action{padding:10px 17px 14px}.panel-action .button{font-size:10px;min-height:32px;padding:8px}.leaflet-control-zoom{margin-left:12px!important;margin-bottom:430px!important}.leaflet-control-scale{margin-left:12px!important}.leaflet-control-attribution{font-size:7px!important;max-width:86%}.map-alert{top:97px;left:12px;right:12px;max-width:none;font-size:10px}.workspace-footer{font-size:8px;gap:10px;line-height:1.6}.sap-info{padding:11px 12px;line-height:1.8;font-size:9px;align-items:flex-start;gap:9px;margin-bottom:17px}.sap-info .icon{margin-top:3px}.table-toolbar{padding:15px;gap:12px}.table-toolbar .search-field{max-width:none;width:100%;flex:0 0 100%}.table-toolbar .search-field input{font-size:11px}.category-filter{font-size:10px}.category-filter select{font-size:10px;padding:8px}.record-total{font-size:9px}.table-foot{padding:13px 15px;gap:12px;line-height:1.7;font-size:8px}.table-foot>span:last-child{max-width:50%;text-align:right}.sap-bottom{padding:17px 0;flex-direction:column;gap:6px}.sap-bottom>span{font-size:9px}.sap-bottom .button{align-self:flex-end;font-size:10px;padding:5px 0}.asset-dialog{width:calc(100% - 16px);max-height:calc(100dvh - 16px);border-radius:12px}.dialog-header{padding:21px 18px 17px;gap:10px}.dialog-header h2{font-size:19px}.dialog-header .eyebrow{font-size:8px}.dialog-header p{font-size:11px}.dialog-body{padding:18px;max-height:calc(100dvh - 240px)}.link-zone{grid-template-columns:1fr;gap:13px;padding:16px}.category-form-field{grid-column:1;grid-row:3}.field-hint{font-size:8px}.attribute-grid{grid-template-columns:1fr;gap:17px}.field label{font-size:11px}.field input,.field select{font-size:12px;height:42px}.gis-field-tag{font-size:8px}.attribute-note{font-size:9px;line-height:1.7;align-items:flex-start}.attribute-note .icon{margin-top:1px}.dialog-footer{padding:14px 18px}.form-save-note{display:none}.dialog-footer .button{min-width:95px}.confirm-dialog{padding:24px}.confirm-dialog h2{font-size:20px}.confirm-dialog p{font-size:12px}.password-dialog .dialog-body{max-height:calc(100dvh - 220px)}.auth-body{padding:17px}.auth-card{padding:30px 24px 0}.auth-card h2{font-size:24px}.auth-card-content{padding-top:32px}.auth-card>.brand-logo{width:244px;height:34px}.auth-card>.brand-logo img{width:303px;left:-29px;top:-59px}.auth-card-foot{font-size:8px;gap:10px}.auth-note{font-size:9px}.install-header{height:75px;padding:0 17px;gap:12px}.install-header .badge{font-size:8px;padding:5px}.install-header .brand-logo{width:185px;height:28px}.install-header .brand-logo img{width:230px;left:-22px;top:-45px}.install-shell{padding:0 15px;margin:30px auto}.install-grid{margin-top:20px}.install-steps ol{grid-template-columns:1fr}.install-steps li{padding-bottom:22px}.install-steps li:nth-child(1){display:none}.install-steps strong{font-size:12px}.install-steps li span{font-size:11px}.install-form-card{padding:23px 18px}.install-form-card label{font-size:11px}.install-form-card input{padding:10px}.installation-success{margin:35px auto}.installation-success h1{font-size:27px}.installation-success>p{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.panel-id .copy-id-button{width:auto;min-height:30px;height:30px;font-size:9px;padding:6px 8px;gap:5px;color:#6e88a6;background:#fff;border-color:#e4ebf3}.panel-id .copy-id-button .icon{width:12px;height:12px}
