#operationsButton{background:#e7f4f0;color:#167460;border:1px solid #bddbd1;padding:6px 10px;font-weight:600;white-space:nowrap}#operationsPanel{width:min(960px,94vw);max-width:960px;max-height:90vh;padding:28px;color:#24404d;border:1px solid #d7e3e7;border-radius:16px;overflow:auto}#operationsPanel::backdrop{background:#102b3b80;backdrop-filter:blur(3px)}.ops-heading{display:flex;justify-content:space-between;align-items:start;margin-bottom:22px}.ops-heading small{font-size:10px;letter-spacing:2px;color:#218673}.ops-heading h2{font-size:27px;margin:6px 0}.ops-heading button{border:0;background:#edf3f4;font-size:22px}.ops-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.ops-metrics>div{padding:20px;background:#f0f7f5;border:1px solid #d9e9e3;border-radius:10px}.ops-metrics b{display:block;font-size:25px;color:#176d59}.ops-metrics span{display:block;font-size:11px;margin-top:6px;color:#627b84}.ops-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:22px}.ops-grid section{min-width:0}#operationsPanel h3{font-size:15px;margin:16px 0 10px}#operationsPanel p{font-size:12px;line-height:1.7}.ops-muted{color:#738892}.ops-buttons{display:flex;flex-wrap:wrap;gap:8px}.ops-buttons button{font-size:11px;padding:9px 11px}#operationsPanel button:disabled{opacity:.45;cursor:not-allowed}#operationsPanel progress{width:100%;height:10px;accent-color:#16836c}#traceForm label{display:flex;flex-direction:column;gap:6px;font-size:11px;margin-bottom:12px}#traceForm select,#traceForm input{width:100%;padding:9px;border:1px solid #d0dce1;border-radius:6px;background:white;color:#24404d}.trace-fields{display:grid;grid-template-columns:90px 1fr;gap:12px}#traceForm .primary{padding:10px 15px}#traceResult ol{padding-left:22px;max-height:220px;overflow:auto}#traceResult li{font-size:12px;padding:8px}#traceResult li span{display:block;color:#738892;font-size:11px;margin-top:4px}.ops-quality{border-top:1px solid #e1eaed;margin-top:22px}.ops-quality h3 span{background:#f2e9d7;border-radius:20px;padding:3px 8px;font-size:11px}.quality-list{max-height:200px;overflow:auto;display:grid;gap:6px}.quality-list button{text-align:left;padding:11px;background:#f7f9fa;border:1px solid #e4ebee;display:flex;justify-content:space-between;gap:15px;font-size:11px}.quality-list button span{color:#738892}.topbar #mapZone{margin-left:auto!important}body{font-size:12px}.tree-heading{font-size:11px}.tree-row{font-size:10px;min-height:28px}.inventory summary{font-size:10px}@media(max-width:700px){.ops-metrics{grid-template-columns:repeat(2,1fr)}.ops-grid{grid-template-columns:1fr}#operationsPanel{padding:18px}.quality-list button{flex-direction:column;gap:5px}.topbar input{width:95px}.topbar{gap:6px}.topbar #mapZone{width:100px!important}}
#operationsPanel .primary{background:#16836c;color:white}#operationsPanel .primary:hover{background:#116852;color:white}
.map-tools{left:14px;top:14px;width:auto;right:14px;max-width:950px;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px;padding:10px;background:#fffffff5;border:1px solid #d8e5e8;border-radius:10px;box-shadow:0 4px 20px #24404d1a}.map-tools .design-label{font-size:9px;letter-spacing:1px;color:#65818b;padding:0 7px;font-weight:700}.map-tools button,.map-tools #finishDraw,.map-tools #undoPoint,.map-tools #cancelDraw{width:auto;height:auto;padding:9px 11px;font-size:11px;border:1px solid #dce6e9;border-radius:6px;background:#fff;color:#24404d;white-space:nowrap}.map-tools button[aria-pressed=true],.map-tools #finishDraw{background:#16836c;color:white;border-color:#16836c}.map-tools button:hover{background:#e9f4f0;color:#176d59}.map-tools button[aria-pressed=true]:hover,.map-tools #finishDraw:hover{background:#116852;color:white}#hint{top:116px;left:20px;transform:none;max-width:calc(100% - 40px);width:auto;background:#173e4a;line-height:1.6;padding:10px 16px}#detail{top:125px}.design-guide{background:#f0f7f5;padding:12px;border-radius:8px;font-size:12px;line-height:1.8}.design-guide ol{padding-left:20px}.map-tools button:disabled{opacity:.4;cursor:not-allowed}@media(max-width:800px){.map-tools{left:8px;right:8px;top:8px;padding:7px;gap:4px}.map-tools .design-label{width:100%}.map-tools button{font-size:10px;padding:7px}#hint{top:180px;left:12px;max-width:calc(100% - 24px)}#detail{top:auto}}
#engineeringButton{background:#edf3fa;border:1px solid #cbdbea;color:#2a648a;padding:6px 10px;white-space:nowrap;font-weight:600}#engineeringPanel{width:min(1120px,96vw);max-width:1120px;max-height:90vh;padding:28px;border-radius:16px;overflow:auto;color:#24404d}#engineeringPanel::backdrop{background:#102b3b80;backdrop-filter:blur(3px)}.engineering-tabs{display:flex;gap:8px;border-bottom:1px solid #dbe6ea;padding-bottom:12px;margin-bottom:18px}.engineering-tabs button.active{background:#173e4a;color:white}.engineering-controls{display:grid;grid-template-columns:1.2fr 1fr 1.2fr;gap:14px}.engineering-controls label,#deliverySection>label{font-size:11px;display:flex;flex-direction:column;gap:6px}.engineering-controls select,#deliveryStage{padding:10px;background:white;color:#24404d;border:1px solid #d5e2e6;border-radius:7px;max-width:100%}.path-table{max-height:300px;overflow:auto;border:1px solid #e0eaee;border-radius:8px;margin:12px 0}.path-table table{margin:0;font-size:11px}.path-table th{position:sticky;top:0;background:#edf4f6;z-index:1;white-space:nowrap}.path-table td,.path-table th{padding:10px}.path-table button{padding:5px 8px;font-size:10px}#pathDiagram{overflow:auto;max-width:100%;margin:15px 0}#pathDiagram svg{display:block;max-width:none}#engineeringPanel .ops-muted{font-size:11px;line-height:1.8}#engineeringPanel button:disabled{opacity:.4;cursor:not-allowed}.lifecycle-cards{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:18px 0}.lifecycle-cards>div{padding:15px;background:#f5f8fa;border:1px solid #e0e9ed;border-top:4px solid;border-radius:8px}.lifecycle-cards b{font-size:24px;display:block}.lifecycle-cards span,.lifecycle-cards small{display:block;font-size:10px;margin-top:7px}.lifecycle-cards small{color:#718793}.delivery-summary{background:#edf7f2;border:1px solid #d1e5db;border-radius:8px;padding:16px;margin:16px 0;display:flex;flex-direction:column;gap:8px;font-size:12px}.delivery-summary small{color:#637c87;font-size:11px}.cluster-symbol{background:transparent;border:0}.cluster-symbol span{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:#173e4a;color:#fff;border:3px solid #fff;box-shadow:0 2px 6px #173e4a44;font-size:10px;font-weight:700}.map-tools #pointDensity{position:static;width:auto;background:#edf4f6;color:#24404d;border:1px solid #dce6e9;padding:9px;font-size:10px;border-radius:6px}@media(max-width:800px){#engineeringPanel{padding:18px}.engineering-controls{grid-template-columns:1fr}.lifecycle-cards{grid-template-columns:repeat(3,1fr)}.topbar input{width:70px}.topbar #mapZone{width:80px!important}}
#lifecycleLegend{position:absolute;left:14px;bottom:48px;z-index:600;display:flex;gap:10px;flex-wrap:wrap;max-width:calc(100% - 65px);background:#fffffff0;border:1px solid #d7e4e7;border-radius:8px;padding:10px;font-size:10px;color:#24404d}#lifecycleLegend span{display:flex;align-items:center;gap:5px}#lifecycleLegend i{width:8px;height:8px;border-radius:50%;display:inline-block}.path-table select{padding:5px;border:1px solid #d7e3e7;border-radius:5px;background:white;color:#24404d;font-size:10px}

/* Compact map drafting controls */
.map-tools{left:12px;top:12px;right:auto;width:58px;max-width:58px;display:flex;flex-direction:column;flex-wrap:nowrap;gap:3px;padding:6px;background:#fff;border:1px solid #e0e6eb;border-radius:9px;box-shadow:0 3px 14px #20394b15}
.map-tools .design-label{width:auto;font-size:8px;letter-spacing:1px;padding:5px 0;color:#8593a1}
.map-tools button,.map-tools #finishDraw,.map-tools #undoPoint,.map-tools #cancelDraw{width:44px;height:46px;min-height:46px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:4px;border:0;border-radius:6px;background:transparent;color:#637384;font-size:9px;font-weight:600}
.map-tools button svg{width:21px;height:21px;flex-shrink:0}.map-tools button[aria-pressed=true]{background:#e6f5f0;color:#13765e;box-shadow:inset 3px 0 #189575}
.map-tools #finishDraw{background:#16836c;color:white}.map-tools button[hidden]{display:none}
.design-context{position:absolute;top:12px;left:82px;z-index:600;display:flex;align-items:center;gap:9px;padding:10px 14px;background:#fffffff5;border:1px solid #e0e6eb;border-radius:8px;box-shadow:0 3px 14px #20394b0d;pointer-events:none}
.design-context b{display:block;font-size:11px;color:#344c5c;font-weight:600}.design-context small{display:block;font-size:9px;color:#8796a3;margin-top:3px}.design-indicator{width:7px;height:7px;background:#16836c;border-radius:50%}
.map-settings{position:absolute;bottom:14px;left:82px;z-index:600;display:flex;gap:5px;flex-wrap:wrap;max-width:calc(100% - 100px)}
.map-settings select{position:static;width:auto;max-width:145px;padding:7px 9px;background:#fff;color:#526879;border:1px solid #dce5eb;border-radius:6px;font-size:10px;box-shadow:0 2px 8px #20394b10}
#hint{top:76px;left:82px;max-width:calc(100% - 100px);font-size:11px;border-radius:7px;padding:10px 12px}
#detail{top:76px;right:14px;max-width:calc(100% - 100px)}#lifecycleLegend{left:82px;bottom:62px;max-width:calc(100% - 100px)}
.map-data-head{color:#344c5c;font-weight:600}.data-tabs button{letter-spacing:.5px}.theme-row{color:#8292a0}
@media(max-width:800px){.map-tools{left:8px;top:8px;width:54px;max-width:54px;padding:4px;gap:2px}.map-tools .design-label{width:auto}.design-context{top:8px;left:70px;padding:9px 11px}.map-settings{left:70px;bottom:12px;max-width:calc(100% - 82px)}#hint{top:70px;left:70px;max-width:calc(100% - 82px)}#detail{top:70px;max-width:calc(100% - 82px)}#lifecycleLegend{left:70px;max-width:calc(100% - 82px)}}

.layer-actions{display:flex;gap:5px;padding:4px 0 7px 17px}.layer-actions button{border:0;background:#edf5f6;color:#357688;padding:5px 7px;font-size:9px;border-radius:4px}.layer-actions .danger{background:#fff0ef;color:#b34339}.layer-features{padding:0 0 8px 18px;max-height:220px;overflow:auto}.layer-features button{display:block;width:100%;text-align:left;background:white;border:0;border-bottom:1px solid #edf1f3;padding:8px 4px;font-size:10px;color:#425b6b}.layer-features button:hover{background:#edf6f2}#detail .actions{position:sticky;top:0;background:white;z-index:2;display:flex;gap:6px;padding-bottom:10px}#detail .actions button{font-size:11px;padding:8px}#detail .actions .danger{background:#fff0ef;color:#b34339;border:1px solid #efc9c5}

.layers-heading{padding:12px 14px;font-size:9px;letter-spacing:.7px;color:#357688;border-bottom:1px solid #e0e5e7}

aside{width:230px;min-width:230px}.layer-search{flex-wrap:wrap}.layer-search input{width:100%}.layer-search button{padding:5px 0}@media(max-width:800px){aside{width:210px;min-width:210px}}

.custom-layer-group .tree-heading,.empty-custom{display:none!important}

.custom-layer-toolbar{padding:7px 9px;border-bottom:1px solid #edf1f3}.custom-layer-toolbar button{width:100%;padding:8px;background:#edf6f2;color:#16765e;border:1px solid #d6e8df;border-radius:5px;font-size:11px}.custom-layer-group .tree-row button{padding:3px 5px;font-size:10px}

.tree-row .layer-menu-toggle{border:0;background:transparent;color:#738793;padding:0 5px;font-size:20px;line-height:24px;border-radius:4px;cursor:pointer}.tree-row .layer-menu-toggle:hover{background:#edf5f6}.layer-actions[data-menu]{margin:2px 0 7px 14px;padding:5px;background:white;border:1px solid #e0e7eb;border-radius:6px;box-shadow:0 3px 10px #20394b12;flex-direction:column;align-items:stretch}.layer-actions[data-menu] button{text-align:left;padding:8px;font-size:10px}.layer-actions[hidden]{display:none!important}

.map-data-head{position:relative;align-items:center;justify-content:flex-start;gap:8px}.map-data-menu{margin-left:auto;position:relative}.map-data-menu summary{list-style:none;cursor:pointer;font-size:20px;line-height:22px;padding:0 5px;color:#738793}.map-data-menu summary::-webkit-details-marker{display:none}.map-data-menu>div{position:absolute;right:0;top:28px;z-index:1200;width:145px;padding:5px;background:white;border:1px solid #e0e7eb;border-radius:6px;box-shadow:0 4px 14px #20394b20}.map-data-menu button{width:100%;text-align:left;background:#edf6f2;border:0;color:#16765e;padding:9px;font-size:11px;border-radius:4px}

.patch-designer{width:min(780px,94vw);max-height:90vh;overflow:auto;padding:25px;border:1px solid #dce6eb;border-radius:12px;color:#344c5c}.patch-designer::backdrop{background:#173e4a80}.patch-ports{display:grid;grid-template-columns:repeat(6,1fr);gap:9px;padding:18px;background:#243948;border-radius:9px;margin:18px 0}.patch-port{background:#354e60;color:#fff;border:1px solid #536b7b;padding:10px 4px;display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0}.patch-port .socket{width:20px;height:15px;background:#121f29;border:3px solid #839ba7;border-radius:2px}.patch-port.assigned .socket{border-color:#49c6a2}.patch-port small{font-size:9px;max-width:100%;overflow:hidden;text-overflow:ellipsis}.patch-port-form{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.patch-port-form label{display:flex;flex-direction:column;gap:6px;font-size:11px}.patch-port-form input,.patch-port-form select{padding:9px;width:100%;border:1px solid #dce6eb;border-radius:5px}.patch-error{color:#b34339}.patch-designer p{font-size:12px;line-height:1.6}@media(max-width:600px){.patch-ports{grid-template-columns:repeat(4,1fr)}}

#hint{pointer-events:none}.design-context{pointer-events:none}

.fiber-category-menu{margin:3px 5px 8px 19px;padding:5px;border:1px solid #e0e7eb;border-radius:6px;background:white;box-shadow:0 3px 10px #20394b12}.fiber-category-menu button{width:100%;text-align:left;padding:9px;border:0;border-radius:4px;background:#edf6f2;color:#16765e;font-size:10px}.fiber-category-menu[hidden]{display:none}.tree-heading .layer-menu-toggle{font-size:20px;line-height:24px;padding:0 5px}.custom-cable-categories .tree-row button{border:0;background:transparent;font-size:13px;padding:3px}.custom-cable-categories .tree-row>span:not(.tree-icon):not(.tree-count){flex:1}

#fiberCategoryMenu{margin-left:auto;display:flex;align-items:center;justify-content:center;width:26px;height:28px;padding:0!important}#fiberCategoryMenu svg{display:block;flex-shrink:0}

.fiber-category-menu:empty{display:none}

#detail .inspector-close{position:sticky;top:0;float:right;margin:-8px -8px 8px 8px;z-index:4;width:30px;height:30px;border:1px solid #dce6eb;border-radius:6px;background:#f5f8fa;color:#526879;font-size:23px;line-height:24px;padding:0;cursor:pointer}#detail .inspector-close:hover{background:#e7eef2}

#detail .actions{float:none;flex-wrap:wrap}#detail #closeInspector{background:#e8eff3;border:1px solid #ccdbe3;color:#344c5c;font-weight:600}

.category-color,.inspector-color{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;color:#425b6b;padding:8px}.category-color input,.inspector-color input{width:42px;height:28px;padding:2px;border:1px solid #cddde4;border-radius:4px;cursor:pointer}.inspector-color{background:#edf6f2;border-radius:6px;margin:10px 0}

.cable-color-editor{padding:10px 12px;border:1px solid #dce9e5;border-top:0;border-radius:0 0 8px 8px;margin-top:-12px;margin-bottom:14px;background:#fbfdfc;display:flex;gap:9px;align-items:center;flex-wrap:wrap}.color-presets{display:flex;gap:7px;width:100%}.color-presets button{width:25px;height:25px;border-radius:50%;padding:0;border:3px solid white;background:var(--swatch);box-shadow:0 0 0 1px #d5e2e7;cursor:pointer}.color-presets button[aria-pressed=true]{box-shadow:0 0 0 2px #244859}.color-presets button:hover{transform:scale(1.12)}.hex-color-label{display:flex;align-items:center;gap:7px;font-size:10px;color:#708693}.hex-color-label input{width:90px;padding:6px;border:1px solid #d4e1e7;border-radius:4px;font-family:monospace;font-size:11px;text-transform:uppercase}#inheritFiberColor{font-size:10px;padding:7px;background:#edf5f6;border:1px solid #d5e3e8;color:#356675}.cable-color-editor small{font-size:9px;color:#7a909b;width:100%}


.leaflet-tile-pane,.street-colors .leaflet-tile-pane{filter:grayscale(.95) brightness(1.08) contrast(.83)!important;opacity:.8!important}

.map-config{padding:7px 9px;background:white;border:1px solid #dce5eb;border-radius:6px;font-size:10px;color:#526879;box-shadow:0 2px 8px #20394b10}.map-setup-error{color:#b34339}.map-key-clear{margin-top:10px;width:100%;padding:9px;font-size:11px}

.satellite-basemap .leaflet-tile-pane{filter:none!important;opacity:1!important}

.patch-port .socket,.patch-port.assigned .socket{border-color:var(--port-color,#839ba7)}.patch-port small{white-space:normal;overflow-wrap:anywhere}.patch-port{border-radius:5px;box-shadow:inset 0 1px 0 #ffffff18}

.port-color-palette{grid-column:1/-1;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.port-color-palette>span{grid-column:1/-1;font-size:12px}.port-color-palette button{display:flex;align-items:center;flex-direction:column;gap:5px;background:#f8fafb;border:1px solid #dce6eb;padding:8px 4px;border-radius:7px}.port-color-palette button span{width:25px;height:25px;border-radius:50%;background:var(--swatch);border:1px solid #0003}.port-color-palette button[aria-pressed=true]{border:2px solid #247e9c;background:#eaf6fa}.port-color-palette small{font-size:10px}

.patch-port em{font-size:9px;font-style:normal;color:#d8e8ef}.port-state-note{grid-column:1/-1;color:#647681}

.odf-summary{padding:12px 16px;background:#edf5f8;border-radius:8px;color:#24546a;font-size:12px;margin-top:12px}.patch-port.selected-port{outline:3px solid #53bada;outline-offset:2px}.patch-port-form textarea{min-height:65px;border:1px solid #dce6eb;border-radius:5px;padding:9px;resize:vertical}.patch-ports{border:7px solid #8195a2;box-shadow:inset 0 0 0 2px #142b39}.patch-designer{width:min(900px,95vw)}

.odf-report-tools{display:flex;gap:10px;margin-top:12px}.odf-report-tools input{flex:1;min-width:0;padding:10px;border:1px solid #dce6eb;border-radius:6px}.patch-port[hidden]{display:none}

#detail #closeInspector.inspector-corner-close{position:absolute;top:8px;right:8px;width:30px;height:30px;padding:0;line-height:28px;font-size:24px;border-radius:6px;z-index:5;background:white;color:#526879;border:1px solid #dce6eb;cursor:pointer}#detail #closeInspector.inspector-corner-close:hover{background:#eaf2f5}#detail #closeInspector.inspector-corner-close:focus-visible{outline:2px solid #247e9c;outline-offset:2px}#detail .actions{padding-right:35px}

#detail .inspector-head{display:flex;align-items:center;gap:10px;position:sticky;top:-20px;background:#fff;z-index:6;padding:8px 0 12px;border-bottom:1px solid #e6edf0;margin-bottom:14px}#detail .inspector-head .actions{position:static;float:none;padding:0;display:flex;gap:6px;flex-wrap:wrap;min-width:0}#detail .inspector-head .actions button{border:1px solid #d8e5ea;border-radius:7px;padding:7px 10px;background:#f5f9fa;color:#345667;font-size:11px;line-height:1.3}#detail .inspector-head #edit{background:#eaf5f8;border-color:#bddce6;color:#216c83}#detail .inspector-head #delete{background:#fff4f2;border-color:#efd0c9;color:#ad493c}#detail .inspector-head #featureUndo:disabled{opacity:.45;cursor:not-allowed}#detail .inspector-head #closeInspector{position:static!important;float:none!important;inset:auto!important;margin:0 0 0 auto!important;flex:0 0 30px;width:30px;height:30px;align-self:flex-start;padding:0;font-size:23px;background:#f6f9fa;color:#526879;border:1px solid #dce6eb;border-radius:7px}#detail .inspector-head button:hover:not(:disabled){filter:brightness(.96)}#detail .inspector-head button:focus-visible{outline:2px solid #247e9c;outline-offset:2px}

.manage-point-categories{margin-top:7px;padding:6px 10px;border:1px solid #bddce6;border-radius:6px;background:#eaf5f8;color:#216c83;font-size:11px}.point-category-manager{width:min(460px,94vw)}.category-actions{display:flex;gap:8px}.category-actions .primary{width:auto}.category-error{color:#ad493c}

.cable-distance-label{background:transparent;border:0;pointer-events:none!important}.cable-distance-label span{display:inline-block;white-space:nowrap;transform:translateX(-50%);padding:3px 6px;border:1px solid #ccdbe3;border-radius:4px;background:#fffffff0;box-shadow:0 1px 3px #203c4c20;color:#294a5c;font-size:10px;font-weight:600;line-height:14px}

.cable-distance-label span{position:absolute;left:0;top:0;transform:translate(-50%,-50%) rotate(var(--cable-angle,0deg));transform-origin:center;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;font-size:9px;line-height:12px;font-weight:600;color:#203c4c;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff}

.cable-distance-label .cable-label-pair{position:absolute;left:0;top:0;width:0;height:0;transform:rotate(var(--cable-angle,0deg));transform-origin:0 0}.cable-distance-label .cable-label-pair span{left:0;transform:translateX(-50%);max-width:140px;font-size:9px;line-height:12px}.cable-distance-label .cable-label-pair .cable-side-id{top:auto;bottom:2px;color:#365b70}.cable-distance-label .cable-label-pair .cable-side-metres{top:2px;bottom:auto;color:#243f4d}

.geometry-editor-controls{position:absolute;top:14px;left:84px;z-index:1100;background:white;padding:12px;border:1px solid #b9d7e1;border-radius:8px;box-shadow:0 3px 14px #21415020;max-width:min(360px,calc(100% - 100px));display:grid;gap:7px}.geometry-editor-controls span{font-size:11px;color:#56717c}.geometry-editor-controls button{padding:7px 10px;margin-right:6px}.geometry-save{background:#247e9c;color:white;border:0}.geometry-error{color:#ad493c}.geometry-handle{border:2px solid #247e9c;background:white;border-radius:50%;box-shadow:0 1px 5px #203c4c50}.geometry-midpoint{border:1px solid #247e9c;background:#bde6ec;border-radius:50%}.geometry-move-all{background:#247e9c;color:white;border:2px solid white;border-radius:6px;text-align:center;font-size:19px;line-height:23px}.geometry-editing .map-tools{pointer-events:none;opacity:.45}.move-feature-position{margin:10px 0;padding:8px 12px;background:#eaf5f8;border:1px solid #bddce6;color:#216c83;border-radius:6px}

.cable-drag-hit{cursor:grab;touch-action:none}.cable-drag-hit:active{cursor:grabbing}


.route-color-boxes{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.route-color-boxes button{display:flex;flex-direction:column;align-items:center;gap:5px;padding:7px;background:#f8fafb;border:1px solid #dce6eb;border-radius:6px;cursor:pointer}.route-color-boxes button span{width:30px;height:25px;border-radius:3px;background:var(--swatch);border:1px solid #0002}.route-color-boxes small{font-size:10px;color:#45616f}.route-color-boxes button[aria-pressed=true]{border:2px solid #247e9c;background:#eaf5f8;padding:6px}.route-color-boxes button:focus-visible{outline:2px solid #247e9c;outline-offset:2px}.color-presets button{border-radius:4px;width:28px;height:28px}

.route-color-control{padding:12px;border:1px solid #dce7ec;border-radius:10px;background:#fbfdfe}.route-palette-title{font-size:12px;font-weight:600;color:#345667;margin-bottom:10px}.route-color-preview{display:flex;align-items:center;gap:10px;background:white;padding:10px;border:1px solid #e3ebef;border-radius:8px}.route-preview-swatch{width:38px;height:38px;flex-shrink:0;border-radius:8px;border:1px solid #0002}.route-color-preview small{font-size:9px;color:#7c919d;display:block}.route-color-name{font-size:12px;color:#345667;display:block;margin-top:3px}.route-hex-label{margin-left:auto;font-size:9px;color:#7c919d}.route-color-control .route-color-hex{width:92px;margin-top:3px;padding:5px 6px;font-size:11px;font-family:monospace;text-transform:uppercase}.route-color-boxes button{position:relative;flex-direction:row;gap:7px;padding:9px 7px}.route-color-boxes button span{width:16px;height:16px;border-radius:4px;flex-shrink:0}.route-color-boxes button small{font-size:10px}.route-color-boxes button b{display:none;position:absolute;right:3px;top:0;font-size:9px;color:#247e9c}.route-color-boxes button[aria-pressed=true]{padding:8px 6px}.route-color-boxes button[aria-pressed=true] b{display:block}.route-custom-color{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#5e7b8a;margin-top:12px}.route-color-control .route-custom-color input{display:inline-block;width:44px;height:28px;padding:2px;margin:0;cursor:pointer}

.route-color-preview{flex-wrap:wrap;gap:9px}.route-color-preview .route-custom-color{margin-top:0;margin-left:auto;display:flex;flex-direction:column;align-items:flex-start;gap:5px;font-size:9px;white-space:nowrap}.route-color-preview .route-hex-label{margin-left:0}.route-color-preview .route-custom-color input{width:44px;height:28px}

.leaflet-interactive.cable-drag-hit{cursor:grab!important;cursor:-webkit-grab;}.leaflet-interactive.cable-drag-hit:active,.cable-dragging,.cable-dragging *{cursor:grabbing!important}.geometry-handle,.geometry-midpoint,.geometry-move-all{cursor:grab!important}.geometry-handle:active,.geometry-midpoint:active,.geometry-move-all:active{cursor:grabbing!important}

.cable-hover-node{border:1.5px solid #5f6368;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0003;pointer-events:none!important}.leaflet-interactive.cable-drag-hit{cursor:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M7%2013V4a1.5%201.5%200%200%201%203%200v6-2a1.5%201.5%200%200%201%203%200v2-1a1.5%201.5%200%200%201%203%200v2-1a1.5%201.5%200%200%201%203%200v6c0%204-2%206-6%206-3%200-4-2-6-4l-3-4c-1-2%201-3%202-2l1%201Z%22%20fill%3D%22white%22%20stroke%3D%22%23333%22%20stroke-width%3D%221.3%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E") 8 5,pointer!important}.cable-dragging,.cable-dragging *{cursor:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M5%2011V9c0-2%203-2%203%200V7c0-2%203-2%203%200V6c0-2%203-2%203%200v2c0-2%203-2%203%200v2c0-2%203-2%203%200v5c0%204-3%206-7%206-4%200-6-3-8-6-1-2-1-4%200-4Z%22%20fill%3D%22white%22%20stroke%3D%22%23333%22%20stroke-width%3D%221.3%22%20stroke-linejoin%3D%22round%22%2F%3E%3Cpath%20d%3D%22M8%209v3m3-5v5m3-4v4m3-2v3%22%20fill%3D%22none%22%20stroke%3D%22%23666%22%20stroke-width%3D%221%22%2F%3E%3C%2Fsvg%3E") 8 5,grabbing!important}

#attributePanel{position:fixed;left:70px;right:20px;bottom:20px;max-height:75vh;z-index:900;background:#fff;border:1px solid #d6e0e5;border-radius:12px;box-shadow:0 12px 45px #17334830;overflow:auto}#attributePanel[hidden]{display:none}.table-head{position:sticky;top:0;background:white;z-index:2;display:flex;justify-content:space-between;padding:16px;border-bottom:1px solid #e4eaf0}.equipment-controls{display:flex;gap:10px;align-items:end;flex-wrap:wrap;padding:16px}.equipment-controls label{display:grid;gap:5px;font-size:12px;color:#526572}.equipment-controls input,.equipment-controls select{padding:8px;border:1px solid #cdd8df;border-radius:7px;max-width:220px}.equipment-scroll{overflow:auto;max-height:42vh}.equipment-scroll table{width:100%;border-collapse:collapse}.equipment-scroll th{position:sticky;top:0;background:#f3f7fa;text-align:left}.equipment-scroll td,.equipment-scroll th{padding:10px;border-bottom:1px solid #e7edf1}.equipment-id{display:block;max-width:180px;overflow:hidden;text-overflow:ellipsis;color:#73838e;font-size:10px}.equipment-actions{white-space:nowrap}.equipment-actions button{margin-right:5px}.equipment-pagination{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:12px}#equipmentCount{padding:0 16px;color:#526572;font-size:12px}@media(max-width:650px){#attributePanel{left:8px;right:8px;bottom:8px}.equipment-controls{gap:8px}.equipment-controls label{flex:1;min-width:130px}}

.equipment-scroll td:first-child,.equipment-scroll th:first-child{position:sticky;left:0;background:#fff;min-width:190px;z-index:1;box-shadow:2px 0 4px #1733480a}.equipment-scroll th:first-child{z-index:3;background:#f3f7fa}.equipment-actions{display:flex;gap:6px;margin-top:8px}.equipment-actions button{padding:6px 10px}.equipment-actions .danger{color:#ad2635;background:#fff2f3;border:1px solid #efbbc1}

.equipment-layout{display:flex}.equipment-browser{width:235px;flex-shrink:0;border-right:1px solid #e1e8ee;padding:12px;max-height:58vh;overflow:auto}.equipment-browser h3{margin:4px 0 12px}.equipment-content{min-width:0;flex:1}.equipment-category-row{display:flex;align-items:center;border-bottom:1px solid #edf1f4}.equipment-browser [data-category]{flex:1;width:100%;display:flex;justify-content:space-between;text-align:left;border:0;background:white;padding:10px 7px}.equipment-browser [aria-pressed=true]{background:#e7f4f1;color:#116e62;font-weight:600}.equipment-browser [data-manage-category]{flex-shrink:0}.equipment-browser span{color:#82919b}@media(max-width:700px){.equipment-layout{display:block}.equipment-browser{width:auto;max-height:160px;border-right:0;border-bottom:1px solid #e1e8ee}}

#attributePanel .table-head{cursor:grab;touch-action:none;user-select:none;align-items:center;gap:12px}#attributePanel .table-head b{margin-right:auto}#attributePanel .table-head.is-dragging{cursor:grabbing}#attributePanel .table-head button{cursor:pointer}#attributePanel{box-sizing:border-box}

#attributePanel{display:flex;flex-direction:column;overflow:hidden}#attributePanel[hidden]{display:none}#attributePanel .table-head{flex-shrink:0}#attributeRows{overflow:auto;min-height:0;flex:1}.table-resize-edge{height:14px;flex-shrink:0;position:relative;cursor:ns-resize;touch-action:none;background:#eef3f6;border-top:1px solid #d7e1e8}.table-resize-edge:after{content:"";position:absolute;width:38px;height:3px;border-radius:2px;background:#9badb9;left:calc(50% - 19px);top:5px}.table-resize-corner{position:absolute;right:0;bottom:0;width:28px;height:22px;padding:0;border:0;border-radius:0;background:transparent;color:#607c8c;cursor:nwse-resize;touch-action:none;z-index:1}

.point-category-manager .category-actions{display:flex;gap:10px;padding-top:12px;border-top:1px solid #e1e8ee}.point-category-manager .category-actions button{min-width:92px}.point-category-manager .category-remove{margin-left:auto;color:#a52838;border-color:#efbbc1;background:#fff3f4}.point-category-manager .category-restore{margin:0 0 12px;color:#17695d}.point-category-manager .category-note{color:#647784;font-size:12px;line-height:1.5}

.point-category-manager .category-actions{position:sticky;top:0;z-index:1;background:#fff;padding:10px 0 14px;margin:0 0 16px;border-top:0;border-bottom:1px solid #e1e8ee;align-items:center;flex-wrap:wrap}.point-category-manager .category-actions .category-remove{margin-left:0}.point-category-manager .category-actions .category-restore{margin:0 0 0 auto}.point-category-manager .category-actions button{border-radius:7px;padding:8px 14px}

/* Open the attribute table as a roomy workspace by default. */
#attributePanel{height:72vh;max-height:calc(100vh - 86px)}#attributeRows>.equipment-layout{min-height:100%}.equipment-scroll{max-height:48vh}@media(max-width:650px){#attributePanel{height:78vh;max-height:calc(100vh - 78px)}}

/* Adapt to the resized table width, including on a desktop display. */
#attributePanel{container-type:inline-size}#attributePanel .equipment-content{display:flex;flex-direction:column;min-height:0}#attributePanel .equipment-controls{gap:8px;padding:12px}#attributePanel .equipment-controls button{border-radius:7px;white-space:nowrap}#attributePanel .equipment-controls label{min-width:130px}#attributePanel .equipment-pagination{border-top:1px solid #e7edf1;margin-top:auto;background:#fff}.equipment-scroll thead button{background:transparent;border:0;font-weight:600;padding:0}.equipment-category-row [data-manage-category]{border:0;background:transparent;font-size:20px;padding:7px}.equipment-category-row:hover{background:#f3f8f7}@container(max-width:700px){#attributePanel .equipment-layout{display:block}#attributePanel .equipment-browser{width:auto;max-height:150px;border-right:0;border-bottom:1px solid #e1e8ee;box-sizing:border-box}#attributePanel .equipment-controls label{flex:1}#attributePanel .equipment-controls input,#attributePanel .equipment-controls select{width:100%;max-width:none;box-sizing:border-box}}

#basemap[hidden]{display:none!important}.map-type-picker{position:absolute;left:14px;bottom:28px;z-index:650;font-family:inherit}.map-type-trigger{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:end;width:76px;height:76px;padding:4px;border:2px solid white;border-radius:9px;background:white;box-shadow:0 2px 9px #16313f40;overflow:hidden}.map-type-trigger>.map-type-preview{position:absolute;inset:0;border-radius:5px}.map-type-trigger b{position:relative;z-index:1;background:#ffffffeb;padding:3px 9px;border-radius:4px;font-size:12px;color:#253a45}.map-type-preview{display:block;height:58px;border-radius:7px;overflow:hidden;position:relative;background-color:#e4eadc}.preview-default{background:linear-gradient(115deg,transparent 43%,#fff 44%,#fff 51%,transparent 52%),linear-gradient(15deg,transparent 35%,#fff 36%,#fff 43%,transparent 44%),linear-gradient(155deg,#d7e8cc 0 35%,#f0ede4 36% 70%,#c6e5ed 71%)}.preview-satellite{background:linear-gradient(115deg,transparent 46%,#c9c7b0 47%,#c9c7b0 49%,transparent 50%),linear-gradient(20deg,#284b37 0 25%,#596343 26% 45%,#334c35 46% 70%,#253c35 71%)}.map-type-choices{position:absolute;bottom:86px;left:0;background:white;border:1px solid #dde4e8;border-radius:12px;padding:14px;box-shadow:0 5px 25px #18374630;width:220px}.map-type-choices[hidden]{display:none}.map-type-choices>strong{display:block;margin-bottom:12px;font-size:13px;color:#30434e}.map-type-cards{display:flex;gap:12px}.map-type-cards button{width:98px;padding:4px;border:2px solid transparent;border-radius:9px;background:white;color:#42525c;display:grid;gap:7px;font-size:12px}.map-type-cards button[aria-pressed=true]{border-color:#168d83;color:#106d65;background:#eff9f7}.map-type-cards button:hover{background:#f0f5f7}.map-type-cards button:disabled{opacity:.55;cursor:wait}.map-type-picker button:focus-visible{outline:3px solid #238cce;outline-offset:3px}@media(max-width:480px){.map-type-picker{left:10px;bottom:28px}.map-type-trigger{width:64px;height:64px}.map-type-choices{bottom:74px}}

/* Layers tile follows the user-provided visual reference. */
.map-type-trigger{width:98px;height:98px;border:2px solid #172126;border-radius:11px;padding:0;box-shadow:0 2px 7px #0005;background:#e3e8e8}.map-type-trigger>.map-type-preview{inset:0;border-radius:8px}.map-type-trigger:after{content:"";position:absolute;inset:28% 0 0;background:linear-gradient(transparent,#0009);pointer-events:none}.map-type-trigger b{position:absolute;left:8px;right:4px;bottom:8px;display:flex;align-items:center;gap:5px;z-index:1;background:none;padding:0;color:#fff;font-size:14px;font-weight:600;text-shadow:0 1px 3px #0008}.map-type-trigger b svg{flex-shrink:0}.map-type-trigger .preview-default{background:linear-gradient(110deg,transparent 47%,#f8fafb 48% 50%,#bac5c9 51%,transparent 52%),linear-gradient(20deg,transparent 37%,#fff 38% 40%,#b5c0c5 41%,transparent 42%),linear-gradient(155deg,transparent 29%,#8ccedb 30% 32%,transparent 33%),repeating-linear-gradient(75deg,transparent 0 18px,#bfcbd077 19px 20px,transparent 21px 34px),linear-gradient(135deg,#f4f6f5,#d8e1dc)}.map-type-choices{bottom:108px}@media(max-width:480px){.map-type-trigger{width:82px;height:82px}.map-type-trigger b{font-size:12px;left:6px;bottom:7px}.map-type-choices{bottom:92px}}



#map .leaflet-bottom.leaflet-left{left:50%;bottom:4px;transform:translateX(-50%)}#map .leaflet-control-scale{margin:0!important;pointer-events:none}

.cable-context-menu{position:fixed;z-index:2200;min-width:155px;background:#fff;border:1px solid #d7e2e7;border-radius:9px;padding:5px;box-shadow:0 4px 20px #17334235}.cable-context-menu button{display:flex;gap:10px;align-items:center;width:100%;border:0;background:#fff;border-radius:6px;padding:10px 14px;text-align:left;color:#263e4b;font-size:13px}.cable-context-menu button:hover,.cable-context-menu button:focus-visible{background:#edf6f3;outline:2px solid #75b7a6;outline-offset:-2px}

.leaflet-interactive.cable-drag-hit:not(.cable-move-ready){touch-action:auto}.cable-context-menu button+button{border-top:1px solid #edf1f3}

.cable-hover-node{width:16px;height:16px;border:0!important;background:transparent!important;box-shadow:none!important;display:flex;align-items:center;justify-content:center;pointer-events:none!important}.cable-hover-node>span{display:block;width:8px;height:8px;box-sizing:border-box;border:1.5px solid #4e5358;border-radius:50%;background:#fff;box-shadow:0 0 0 2px #ffffff70,0 1px 2px #0003}

.cable-cut-marker{pointer-events:none!important;background:transparent;border:0}.cable-cut-marker svg{display:block;width:18px;height:18px;filter:drop-shadow(0 1px 2px #0003)}

.cut-end-handle{display:flex;align-items:center;justify-content:center;background:transparent;border:0;cursor:grab}.cut-end-handle>span{width:5px;height:5px;border:1px solid #65757b;background:white;border-radius:50%;box-shadow:0 0 0 2px #ffffff90;box-sizing:border-box}.cut-end-handle.joined-cut-end>span{width:7px;height:7px;border-color:#c54c42}.cut-end-handle:active{cursor:grabbing}

.join-box-map-icon{background:transparent;border:0}.join-box-map-icon svg{display:block;width:24px;height:24px;filter:drop-shadow(0 1px 2px #0004)}.join-box-dialog{width:min(900px,94vw);max-width:94vw;max-height:90vh;padding:0;border:1px solid #d5e1e7;border-radius:12px;box-shadow:0 15px 65px #142e3c40;overflow:auto}.join-box-dialog::backdrop{background:#18344166}.join-box-dialog .dialoghead{padding:14px 20px;border-bottom:1px solid #e1e8ed;background:#f7fafb}.join-box-dialog h2{font-size:17px;margin:0}.joinbox-actions{display:flex;align-items:center;gap:10px;padding:14px 20px 5px;flex-wrap:wrap}.joinbox-actions button{padding:8px 12px;border-radius:7px}.joinbox-summary{margin-left:auto;color:#546e7c;font-size:12px}.joinbox-instruction{padding:0 20px;color:#657986;font-size:12px}.joinbox-cable-selects{display:flex;justify-content:space-between;gap:30px;padding:8px 24px 18px}.joinbox-cable-selects label{display:grid;gap:6px;width:42%;font-size:12px;color:#4f6875}.joinbox-cable-selects select{width:100%;border:1px solid #cfdce2;border-radius:6px;padding:8px;background:white;color:#2f4855}.join-diagram-scroll{max-height:57vh;overflow:auto;padding:4px 24px 16px}.join-diagram{display:grid;grid-template-columns:minmax(140px,1fr) 180px minmax(140px,1fr);align-items:start;min-width:500px;padding:0 8px}.join-core-column{padding:0 14px 0 38px;background:linear-gradient(to bottom,#2098ef 0 75%,#ff9700 75%);border-radius:2px}.join-right-column{padding:0 38px 0 14px}.join-core-row{display:block;position:relative;width:100%;height:18px;min-height:18px;line-height:17px;padding:0;border:0;border-bottom:1px solid #0003;border-radius:0;background:var(--core-color);font-size:11px;text-align:center}.join-core-row:after{content:"";position:absolute;right:-14px;top:8px;width:14px;height:2px;background:#19252a}.join-right-column .join-core-row:after{left:-14px;right:auto}.join-core-row[aria-pressed=true]{outline:2px solid #1d323e;outline-offset:-2px;font-weight:700}.join-core-row:focus-visible{outline:3px solid #00bcd4;outline-offset:-3px}.join-core-paths{display:block;overflow:visible}.joinbox-error{padding:0 20px;color:#b63232;font-size:12px}.joinbox-status{padding:0 20px 14px;color:#147461;font-size:12px;min-height:18px}@media(max-width:600px){.joinbox-cable-selects{gap:12px;padding:10px 16px}.joinbox-cable-selects label{width:50%}.joinbox-summary{margin-left:0}.join-diagram-scroll{padding:4px 12px 12px}.join-diagram{min-width:440px;grid-template-columns:130px 180px 130px}}

.joinbox-coordinates{display:block;margin-top:5px;font-size:11px;color:#627a87;font-weight:400}.joinbox-hidden-label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.joinbox-core-editor{display:flex;align-items:end;gap:10px;padding:0 24px 16px;flex-wrap:wrap}.joinbox-core-editor label{display:grid;gap:5px;font-size:12px;color:#4d6876}.joinbox-core-editor select{min-width:130px;border:1px solid #cddbe2;border-radius:6px;padding:7px;background:white}.joinbox-core-editor>span{align-self:center;margin-top:16px;color:#567785}.joinbox-core-editor button{padding:8px 16px;border-radius:6px;border-color:#9ecac0;background:#edf8f4;color:#186858}

.join-all-diagram{position:relative;min-width:170px}.join-all-paths{position:absolute;left:0;top:0;pointer-events:none}.join-all-columns{position:relative;display:flex;gap:70px;align-items:start;width:max-content}.join-all-column{width:170px;flex:0 0 170px}.join-all-cable-name{height:52px;box-sizing:border-box;padding:6px 4px;font-size:12px;overflow:hidden;color:#375567}.join-all-cable-name small{display:block;color:#768995;font-size:10px;margin-top:3px}.join-all-column .join-core-column{padding:0 12px;background:linear-gradient(to bottom,#2098ef 0 75%,#ff9700 75%)}.join-all-column .join-core-row:after{right:-12px;width:12px}.joinbox-all-editor{margin:10px 20px 4px;border-top:1px solid #dfe8ed;padding-top:12px}.joinbox-all-editor>label{display:flex;align-items:center;gap:10px;font-size:12px;color:#486575}.joinbox-source-cable{max-width:340px;border:1px solid #cad9e1;border-radius:6px;padding:6px;background:white}.joinbox-mapping-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:7px;max-height:220px;overflow:auto;padding:10px 2px}.join-mapping-row{display:flex;align-items:center;gap:6px;background:#f7fafb;border:1px solid #e2eaee;padding:5px;border-radius:6px;font-size:12px;min-width:0}.join-mapping-row b{display:flex;align-items:center;gap:5px;min-width:32px}.join-mapping-row i{display:inline-block;width:9px;height:9px;border-radius:2px;border:1px solid #0002}.join-mapping-row select{min-width:0;width:100%;border:1px solid #cfdee5;background:white;border-radius:4px;padding:4px}.join-mapping-row input{width:58px;flex:0 0 58px;box-sizing:border-box;border:1px solid #cfdee5;border-radius:4px;padding:4px}.join-box-dialog .join-diagram-scroll{max-height:43vh}

.join-all-column .join-core-row:before{content:"";position:absolute;left:-12px;top:8px;width:12px;height:2px;background:#19252a}

/* Clean fiber trays: numbered cores with fine colored strands. */
.join-box-dialog{background:#fff}.join-all-column{width:190px;flex-basis:190px;border-radius:10px;overflow:visible;background:#fff;box-shadow:0 1px 8px #29445112,inset 0 0 0 1px #dbe5eb}.join-all-cable-name{height:52px;padding:9px 12px;background:#f2f7fa;border-radius:10px 10px 0 0;box-shadow:inset 0 -1px 0 #dce6ec;display:flex;align-items:center;justify-content:space-between;gap:8px}.join-all-cable-name strong{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;color:#2c4a5a}.join-all-cable-name small{white-space:nowrap;flex-shrink:0;margin:0;padding:3px 6px;border:1px solid #d4e2e8;border-radius:10px;color:#527281;background:white;font-size:10px}.join-all-column .join-core-column{padding:0 18px;background:#fff;border-radius:0 0 10px 10px;box-shadow:inset 0 -1px 0 #dbe5eb}.join-all-column .join-core-row{box-sizing:border-box;display:flex;align-items:center;gap:7px;height:22px;min-height:22px;line-height:20px;background:#fff;border:0;border-bottom:1px solid #edf2f5;padding:0 5px;outline:0}.join-all-column .join-core-row:hover{background:#eff8f6}.join-all-column .join-core-row[aria-pressed=true]{background:#e8f5f1;box-shadow:inset 0 0 0 1.5px #379c87;z-index:2}.join-all-column .join-core-row:focus-visible{outline:2px solid #2c91ce;outline-offset:-2px}.join-core-number{display:inline-flex;align-items:center;justify-content:center;flex:0 0 24px;height:16px;line-height:16px;border-radius:4px;background:var(--core-color);font-size:10px;font-weight:600;box-shadow:inset 0 0 0 1px #0001}.join-strand-line{height:2px;background:var(--core-color);flex:1;border-radius:2px}.join-core-port{width:6px;height:6px;flex:0 0 6px;border-radius:50%;background:#fff;border:1.5px solid var(--core-color);box-sizing:border-box}.join-all-column .join-core-row:before,.join-all-column .join-core-row:after{top:10px;width:18px;height:2px;background:var(--core-color)}.join-all-column .join-core-row:before{left:-18px}.join-all-column .join-core-row:after{right:-18px}.joinbox-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.joinbox-editor-heading b{font-size:13px;color:#355566}.joinbox-editor-heading small{font-size:11px;color:#7b8e99}.joinbox-mapping-list{gap:8px}.join-mapping-row{padding:7px;background:#fff;border-color:#dce7ed;border-radius:8px;box-shadow:0 1px 3px #24445308}.join-mapping-row b{font-size:11px;min-width:35px;color:#3a5768}.join-mapping-row select,.join-mapping-row input{background:#f8fafc;padding:6px;border-color:#d9e4eb;border-radius:5px}.join-mapping-row>span{color:#8ba1ad}.join-diagram-scroll{background:linear-gradient(#fbfdfe,#fff);border-top:1px solid #f0f4f6;border-bottom:1px solid #eef3f6}@media(max-width:600px){.joinbox-editor-heading{display:block}.joinbox-editor-heading small{display:block;margin-top:4px}}

/* Direct core patching: coloured strands, no mapping form below. */
.join-box-dialog .join-diagram-scroll{max-height:65vh;padding:20px}.join-all-column .join-core-column{padding:8px 18px;background:linear-gradient(90deg,#2196df 0 12px,#fff 12px calc(100% - 12px),#2196df calc(100% - 12px));padding-top:0;padding-bottom:0}.join-all-column .join-core-row{cursor:grab;touch-action:none;background:color-mix(in srgb,var(--core-color) 14%,white)}.join-all-column .join-core-row:active{cursor:grabbing}.join-strand-line{height:5px;box-shadow:0 1px 1px #0002}.join-core-number{border-radius:2px}.join-core-port{width:8px;height:8px;flex-basis:8px}.join-drag-line{position:fixed;height:3px;transform-origin:0 50%;pointer-events:none;z-index:20;box-shadow:0 0 0 1px #ffffffb0}.joinbox-status:empty,.joinbox-error:empty{display:none}

/* Reference-style splice trays: continuous coloured cores and quiet headers. */
.join-all-column{border-radius:3px;box-shadow:none;background:transparent}.join-all-cable-name{background:transparent;border-radius:0;box-shadow:none;padding:8px 0;gap:6px}.join-all-cable-name strong{font-size:11px}.join-all-cable-name small{background:transparent;border:0;padding:0;font-size:10px}.join-all-column .join-core-column{padding:0 20px;background:linear-gradient(to bottom,#2498e8 0 75%,#ff9900 75%);border-radius:1px;box-shadow:none}.join-all-column .join-core-row{display:block;background:var(--core-color);border-bottom:1px solid #16364655;padding:0;text-align:center;line-height:21px;box-shadow:none}.join-core-number{display:inline;background:transparent;box-shadow:none;border-radius:0;font-size:11px;font-weight:500;height:auto;line-height:inherit}.join-strand-line,.join-core-port{display:none}.join-all-column .join-core-row:before,.join-all-column .join-core-row:after{background:#25343c;width:20px;height:2px;top:10px}.join-all-column .join-core-row:before{left:-20px}.join-all-column .join-core-row:after{right:-20px}.join-all-column .join-core-row:hover{background:var(--core-color);filter:brightness(1.12);outline:2px solid #254958;outline-offset:-2px;z-index:3}.join-all-column .join-core-row[aria-pressed=true]{background:var(--core-color);box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #243d4a;z-index:2}.join-box-dialog .join-diagram-scroll{background:white;padding:16px 28px 24px}.joinbox-instruction{font-size:11px;color:#81919a}

/* Twelve cores per tube; tube colour stays on the two outer walls. */
.join-all-column .join-core-column{padding:0;background:transparent}.join-tube-block{padding:0 20px;background:linear-gradient(90deg,var(--tube-color) 0 20px,#fff 20px calc(100% - 20px),var(--tube-color) calc(100% - 20px));border-radius:3px;position:relative}.join-tube-block+.join-tube-block{margin-top:10px}.join-all-column .join-core-row{background:#fff;color:#253b47!important;border-bottom:1px solid #dbe2e6}.join-core-number{color:#253b47}.join-all-column .join-core-row:hover{background:#f1f5f7;filter:none}.join-all-column .join-core-row[aria-pressed=true]{background:#eaf0f4;box-shadow:inset 0 0 0 2px #637e8d}.join-all-column .join-core-row:before,.join-all-column .join-core-row:after{background:#566872}

/* Match the supplied diagram: full coloured core bars within tube walls. */
.join-all-column .join-core-row{background:var(--core-color);color:var(--core-ink)!important;border-bottom:1px solid #20323c66;text-align:center}.join-core-number{color:inherit;font-size:11px;font-weight:500}.join-all-column .join-core-row:hover{background:var(--core-color);filter:brightness(1.08);outline:2px solid #253e4a;outline-offset:-2px}.join-all-column .join-core-row[aria-pressed=true]{background:var(--core-color);box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #243d4a}.join-all-column .join-core-row:before,.join-all-column .join-core-row:after{background:#17262d;height:2px}

/* Tube jacket faces outward; the splice-facing edge stays open and neutral. */
.join-tube-block{padding:0 20px;background:linear-gradient(90deg,var(--tube-color) 0 20px,#fff 20px);box-shadow:inset 0 0 0 1px #3a5263;border-radius:2px}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block{background:linear-gradient(90deg,#fff 0 calc(100% - 20px),var(--tube-color) calc(100% - 20px))}.join-tube-block .join-core-row{border-left:1px solid #354b59;border-right:1px solid #354b59}.join-tube-block .join-core-row:first-child{border-top:1px solid #354b59}.join-tube-block .join-core-row:last-child{border-bottom:1px solid #354b59}.join-all-column .join-core-row:before,.join-all-column .join-core-row:after{z-index:1}

/* Keep the jacket boundary outside; no enclosure on the splice-facing side. */
.join-tube-block{background:linear-gradient(90deg,var(--tube-color) 0 20px,transparent 20px);box-shadow:none;border-radius:0}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block{background:linear-gradient(90deg,transparent 0 calc(100% - 20px),var(--tube-color) calc(100% - 20px))}.join-tube-block .join-core-row{border-left:1px solid #354b59;border-right:0}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block .join-core-row{border-left:0;border-right:1px solid #354b59}.join-tube-block .join-core-row:first-child{border-top:0}.join-tube-block .join-core-row:last-child{border-bottom:0}

/* Wider uninterrupted outer jackets; keep only the inward core tails. */
.join-tube-block,.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block{background:transparent}.join-tube-block:before{content:"";position:absolute;left:-12px;top:0;bottom:0;width:32px;background:var(--tube-color);border-radius:2px 0 0 2px;box-shadow:inset 1px 0 0 #0002;pointer-events:none}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block:before{left:auto;right:-12px;border-radius:0 2px 2px 0;box-shadow:inset -1px 0 0 #0002}.join-all-column .join-tube-block .join-core-row{border-left:0;border-right:0}.join-all-column .join-core-row:before{display:none}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-row:before{display:block}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-row:after{display:none}

.join-tube-block:before{left:-24px;width:44px}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block:before{left:auto;right:-24px}.join-box-dialog .join-diagram-scroll{padding-left:40px;padding-right:40px}

.join-box-dialog .joinbox-actions{gap:8px;padding:12px 20px;border-bottom:1px solid #edf1f4;background:#fff}.join-box-dialog .joinbox-actions button{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:7px 14px;border:1px solid #d7e1e7;border-radius:6px;background:#f8fafb;color:#35515f;font-size:12px;font-weight:600;line-height:18px;cursor:pointer}.join-box-dialog .joinbox-actions button:hover{background:#edf3f6;border-color:#adbfca}.join-box-dialog .joinbox-actions .primary{background:#187d68;border-color:#187d68;color:white}.join-box-dialog .joinbox-actions .primary:hover{background:#126b59}.join-box-dialog .joinbox-actions .joinbox-delete{color:#b74343;background:#fff7f7;border-color:#edcccc;margin-left:8px}.join-box-dialog .joinbox-actions .joinbox-delete:hover{background:#ffeded;border-color:#da9e9e}.join-box-dialog .joinbox-actions button:disabled{opacity:.45;cursor:default}.join-box-dialog .joinbox-actions button:focus-visible{outline:2px solid #328cae;outline-offset:2px}

/* Compact shared action strip; override the generic full-width primary button. */
.join-box-dialog .joinbox-actions{display:flex;flex-wrap:wrap;gap:0;align-items:center}.join-box-dialog .joinbox-actions button{width:auto;flex:0 0 auto;min-height:30px;margin:0;padding:5px 12px;border-radius:0;font-size:12px}.join-box-dialog .joinbox-actions button+button{border-left-width:0}.join-box-dialog .joinbox-actions button:first-child{border-radius:5px 0 0 5px}.join-box-dialog .joinbox-actions .joinbox-delete{margin:0;border-radius:0 5px 5px 0}.join-box-dialog .joinbox-summary{padding-left:14px}@media(max-width:480px){.join-box-dialog .joinbox-summary{width:100%;padding:8px 0 0;margin:0}}

.joinbox-edit-tools:not([hidden]){display:flex;align-items:center;gap:12px;padding:8px 20px}.joinbox-edit-tools .joinbox-instruction{padding:0;margin:0}.joinbox-edit-tools button{width:auto;padding:4px 9px;font-size:11px;border:1px solid #d7e1e7;border-radius:4px;background:#f8fafb;color:#46616f}.joinbox-edit-tools[hidden]{display:none}

.join-all-paths{overflow:visible}.join-connection-hit{pointer-events:stroke;cursor:pointer;outline:none}.join-connection-line{pointer-events:none}.join-connection-hit:hover+.join-connection-line{stroke-width:3;opacity:1}

/* Let clicks through the flex layout's empty gaps to the SVG connection below. */
.join-all-columns{pointer-events:none}.join-all-column{pointer-events:auto}.join-all-paths{pointer-events:none}.join-connection-hit{pointer-events:stroke}

/* Reference table: colour names and core numbers, with vertical tube labels. */
.join-all-column .join-core-row{display:flex;align-items:center;justify-content:center;line-height:21px;gap:0;padding:0}.join-core-number{flex:1;text-align:center;height:auto;line-height:21px;font-size:12px;font-weight:500}.join-core-index{flex:0 0 27px;background:white;color:#263d49;font-size:11px;height:21px;line-height:21px;border-left:1px solid #334b5944}.join-tube-block:after{content:attr(data-tube-label);position:absolute;left:-24px;top:0;bottom:0;width:44px;display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;transform:rotate(180deg);font-size:12px;font-weight:600;color:white;text-shadow:0 1px 2px #0008;pointer-events:none}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block:after{left:auto;right:-24px;transform:none}.join-all-column{padding-top:0}.join-all-diagram{padding-top:0}

.join-core-table-head{height:28px;box-sizing:border-box;display:grid;grid-template-columns:55px 1fr 27px;margin:0 20px;background:#e8edf0;border:1px solid #b9c7ce;font-size:10px;align-items:center;text-align:center;color:#334b59;font-weight:600}.join-core-table-head span+span{border-left:1px solid #bdcbd2}.join-core-table-row{display:flex;height:22px;position:relative}.join-core-note{width:55px;flex:0 0 55px;min-width:0;box-sizing:border-box;border:0;border-bottom:1px solid #d4dde2;border-right:1px solid #9dadb6;background:#fff;border-radius:0;padding:0 3px;font-size:10px;color:#344c59;outline-offset:-2px}.join-core-table-row .join-core-row{flex:1;min-width:0;width:auto}.join-core-table-row .join-core-number{font-size:11px}.join-tube-block .join-core-row:first-child{border-top:0}.join-tube-block .join-core-row:last-child{border-bottom:1px solid #20323c66}

/* Refine the reference table without changing its layout. */
.join-core-table-head{background:linear-gradient(#f4f7f9,#e5ecef);border-color:#c2cfd6;border-radius:3px 3px 0 0;font-size:10px;font-weight:600;letter-spacing:.15px;color:#405967}.join-core-table-head span{line-height:20px}.join-core-table-row{box-shadow:0 1px 0 #243c4912}.join-core-note{background:#fafcfd;color:#344e5e;border-bottom-color:#d9e3e9;border-right-color:#c4d2db;padding:0 5px;font-size:10px;transition:background .12s}.join-core-note:hover{background:#f0f6fa}.join-core-note:focus{background:#fff;outline:2px solid #7197ac;outline-offset:-2px}.join-core-index{background:#f7fafc;color:#405866;font-size:10px;font-variant-numeric:tabular-nums;border-left-color:#344e5c44}.join-core-number{letter-spacing:.1px}.join-tube-block:before{box-shadow:inset 1px 0 0 #0002,inset 0 1px 0 #ffffff35,inset 0 -1px 0 #0001}.join-tube-block:after{font-size:11px;letter-spacing:.2px}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block:before{box-shadow:inset -1px 0 0 #0002,inset 0 1px 0 #ffffff35,inset 0 -1px 0 #0001}.join-box-dialog .dialoghead{background:#fafcfd}.joinbox-coordinates{font-size:10px;color:#82939e}.join-box-dialog .join-diagram-scroll{padding-top:20px;padding-bottom:28px}

/* Align the header and cells; expose only the outward tube jacket. */
.join-all-column .join-tube-block{padding-left:20px;padding-right:0}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block{padding-left:0;padding-right:20px}.join-core-table-head{margin-left:20px;margin-right:0;grid-template-columns:55px minmax(0,1fr) 27px;height:28px;background:#e5e8ea;border:1px solid #34444d;border-radius:0;color:#23343e;letter-spacing:0}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-table-head{margin-left:0;margin-right:20px}.join-core-table-head span{box-sizing:border-box;height:26px;display:flex;align-items:center;justify-content:center;font-size:10px}.join-core-table-head span+span{border-left:1px solid #34444d}.join-core-table-row{height:22px;box-sizing:border-box;box-shadow:none;border-left:1px solid #34444d;border-right:1px solid #34444d;border-bottom:1px solid #34444d;display:flex}.join-tube-block+.join-tube-block .join-core-table-row:first-child{border-top:1px solid #34444d}.join-core-note{height:21px;flex:0 0 54px;width:54px;padding:0 4px;border:0;border-right:1px solid #34444d;border-radius:0;background:white;font-size:10px;line-height:20px}.join-all-column .join-core-table-row .join-core-row{height:21px;min-height:0;border:0!important;line-height:20px;box-sizing:border-box;box-shadow:none;overflow:visible}.join-core-table-row .join-core-number{height:20px;line-height:20px;font-size:11px}.join-core-index{height:21px;line-height:20px;box-sizing:border-box;flex-basis:26px;border-left:1px solid #34444d;background:white;font-size:11px;color:#20323c}.join-tube-block:before{border:1px solid #34444d;box-sizing:border-box;border-radius:0;box-shadow:none}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block:before{box-shadow:none;border-radius:0}.join-tube-block:after{font-size:12px;font-weight:600;letter-spacing:0}.join-all-column .join-core-row[aria-pressed=true]{outline:2px solid #487e9a;outline-offset:-2px}

/* Outside to inside: notes, tube jacket, then the coloured cores. */
.join-all-column .join-tube-block{padding-left:99px;padding-right:0}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block{padding-left:0;padding-right:99px}.join-tube-block:before,.join-tube-block:after{left:55px;width:44px}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block:before,.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block:after{left:auto;right:55px}.join-core-table-row .join-core-note{position:absolute;left:-99px;top:0;width:55px;height:21px;border-left:1px solid #34444d;border-right:1px solid #34444d;border-bottom:1px solid #34444d;box-sizing:border-box;z-index:2}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-note{left:auto;right:-99px}.join-core-table-head,.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-table-head{margin:0;display:flex;border:0;gap:0}.join-core-table-head span{height:28px;box-sizing:border-box;border:1px solid #34444d;border-right:0;background:#e5e8ea}.join-core-table-head span:nth-child(1){order:0;flex:0 0 55px}.join-core-table-head .join-tube-heading{order:1;flex:0 0 44px}.join-core-table-head span:nth-child(2){order:2;flex:1}.join-core-table-head span:nth-child(3){order:3;flex:0 0 27px;border-right:1px solid #34444d}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-table-head span:nth-child(2){order:0}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-table-head span:nth-child(3){order:1;border-right:0}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-table-head .join-tube-heading{order:2}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-table-head span:nth-child(1){order:3;border-right:1px solid #34444d}

/* Mirror the far cable and leave more working space for the joins. */
.join-all-columns{gap:140px}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-table-row .join-core-row{flex-direction:row-reverse}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-index{border-left:0;border-right:1px solid #34444d}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-table-head span:nth-child(3){order:0}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-table-head span:nth-child(2){order:1}

.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block:after{transform:rotate(180deg)}

.join-fiber-id{height:30px;box-sizing:border-box;display:flex;align-items:center;gap:7px;padding:0 5px;color:#304a59;min-width:0}.join-fiber-id span{font-size:10px;color:#7a8f9b;white-space:nowrap}.join-fiber-id strong{font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Fiber ID spans the complete four-column table as its top cell. */
.join-fiber-id{width:100%;height:30px;padding:0 8px;justify-content:center;border:1px solid #34444d;border-bottom:0;background:#f1f4f6;gap:8px}.join-fiber-id span{font-size:10px;font-weight:500;color:#526977}.join-fiber-id strong{font-size:11px;color:#253f4e}.join-core-table-head{width:100%}

/* One physical lead and a drag target at its exact tip. */
.join-all-column .join-core-row:before,.join-all-column .join-core-row:after,.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-row:before,.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-row:after{display:none}.join-core-tip{position:absolute;right:-21px;top:0;width:21px;height:21px;display:block;cursor:crosshair;touch-action:none;z-index:4}.join-core-tip:before{content:"";position:absolute;left:0;right:0;top:10px;height:1.5px;background:#53636c;pointer-events:none}.join-core-tip:after{content:"";position:absolute;right:-4px;top:6px;width:8px;height:8px;box-sizing:border-box;border:1.5px solid #486778;border-radius:50%;background:#fff;opacity:0;transition:opacity .1s;pointer-events:none}.join-core-row:hover .join-core-tip:after,.join-core-row:focus-visible .join-core-tip:after,.join-core-tip:hover:after{opacity:1}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-tip{left:-21px;right:auto}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-tip:after{right:auto;left:-4px}.join-connection-line{stroke-linecap:round;stroke-linejoin:round}

.join-connection-line{shape-rendering:geometricPrecision;stroke-linecap:round;stroke-linejoin:round}.join-core-tip:before{height:2px;background:#455e6b;top:10px}.join-core-tip{top:-.5px}.join-connection-hit:hover+.join-connection-line{stroke-width:2.5;opacity:1}.join-drag-line{height:2px;background:#455e6b;box-shadow:none}

.join-core-tip:before{background:var(--core-color);box-shadow:0 0 0 .3px #354b5930}.join-connection-line{filter:drop-shadow(0 0 .3px #263e4a70)}.join-connection-hit:hover+.join-connection-line{stroke-width:3}.join-connection-line[data-selected=true]{stroke-width:3.5;filter:drop-shadow(0 0 1.5px #1b668c)}

/* Continuous joins: exact lead endpoints and no shadow seam. */
.join-core-tip{width:20px;right:-20px;top:0}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-tip{left:-20px;right:auto}.join-core-tip:before{top:9px;height:2px;box-shadow:none}.join-core-tip:after{top:6px}.join-connection-line{filter:none;vector-effect:non-scaling-stroke}.join-connection-line[data-selected=true]{filter:none;stroke-width:3.5}.join-connection-hit:hover+.join-connection-line{filter:none;stroke-width:2.5}

/* Connected cores use one measured SVG curve, without a separate CSS lead. */
.join-core-row[data-connected=true] .join-core-tip:before{display:none}

.join-fiber-id .join-total-cores{margin-left:auto;flex-shrink:0;font-size:10px;font-weight:400;color:#536b79;white-space:nowrap}.join-fiber-id{gap:5px}.join-fiber-id strong{min-width:0}.join-fiber-id span{flex-shrink:0}

/* Every comment cell fills its 22px row with a continuous table grid. */
.join-box-dialog .join-core-table-row .join-core-note{top:0;height:22px;min-height:22px;max-height:22px;box-sizing:border-box;border:1px solid #34444d;border-top:0;border-radius:0;margin:0;padding:0 4px;background:#fff;box-shadow:none;line-height:20px;appearance:none}.join-box-dialog .join-tube-block .join-core-table-row:first-child .join-core-note{border-top:1px solid #34444d}.join-box-dialog .join-core-table-row{height:22px;min-height:22px;max-height:22px;box-sizing:border-box}.join-box-dialog .join-tube-block+.join-tube-block .join-core-table-row:first-child{border-top:0}.join-box-dialog .join-core-table-row .join-core-note:focus{outline:2px solid #7197ac;outline-offset:-2px}

/* Core numbers share the exact same cell grid, including tube row one. */
.join-box-dialog .join-core-table-row{border:0}.join-box-dialog .join-all-column .join-core-table-row .join-core-row{height:22px;min-height:22px;max-height:22px;box-sizing:border-box;border:0!important;border-bottom:1px solid #34444d!important;border-right:1px solid #34444d!important;align-items:stretch;line-height:21px}.join-box-dialog .join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-table-row .join-core-row{border-right:0!important;border-left:1px solid #34444d!important}.join-box-dialog .join-tube-block .join-core-table-row:first-child .join-core-row{border-top:1px solid #34444d!important}.join-box-dialog .join-core-table-row .join-core-index{display:flex;align-items:center;justify-content:center;height:auto;min-height:0;line-height:normal;margin:0;padding:0;align-self:stretch;box-sizing:border-box;background:#fff;border-left:1px solid #34444d}.join-box-dialog .join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-index{border-left:0;border-right:1px solid #34444d}.join-box-dialog .join-core-table-row .join-core-number{display:flex;align-items:center;justify-content:center;align-self:stretch;height:auto;line-height:normal}

/* Two distinct cells in the cable summary row. */
.join-fiber-id{display:grid;grid-template-columns:auto minmax(0,1fr) 65px;gap:0;padding:0;height:30px;align-items:stretch}.join-fiber-id>span{display:flex;align-items:center;padding-left:6px;padding-right:4px;font-size:9px}.join-fiber-id>strong{display:flex;align-items:center;padding-right:5px;font-size:10px}.join-fiber-id .join-total-cores{display:flex;align-items:center;justify-content:center;margin:0;padding:0 4px;border-left:1px solid #34444d;font-size:10px;background:#e8edf0;box-sizing:border-box}

/* Mirror the summary: core count faces the join on both cables. */
.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-fiber-id{grid-template-columns:65px auto minmax(0,1fr)}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-fiber-id .join-total-cores{grid-column:1;grid-row:1;border-left:0;border-right:1px solid #34444d}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-fiber-id>span{grid-column:2;grid-row:1}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-fiber-id>strong{grid-column:3;grid-row:1}

/* Wider note cells without shrinking the cores or splice gap. */
.join-all-column{width:235px;flex-basis:235px}.join-all-column .join-tube-block{padding-left:144px;padding-right:0}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block{padding-left:0;padding-right:144px}.join-tube-block:before,.join-tube-block:after{left:100px}.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block:before,.join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-tube-block:after{left:auto;right:100px}.join-box-dialog .join-core-table-row .join-core-note{left:-144px;width:100px;font-size:11px;padding:0 6px}.join-box-dialog .join-all-column:is([data-join-reverse="true"],:not([data-join-reverse]):nth-child(even),.splitter-side-fiber:not([data-join-reverse])) .join-core-note{left:auto;right:-144px}.join-core-table-head span:nth-child(1){flex-basis:100px}

.join-all-columns{display:grid;grid-template-columns:235px 235px;column-gap:140px;row-gap:48px;align-items:start;width:610px}.join-all-diagram{min-width:610px}

.joinbox-workspace{display:flex;align-items:flex-start;gap:0}.joinbox-workspace>.join-diagram-scroll{flex:1;min-width:0}.join-box-dialog:has(.joinbox-splitter-panel:not([hidden])){width:min(1180px,96vw);max-width:96vw}.joinbox-workspace>.joinbox-splitter-panel{position:static;display:block;flex:0 0 245px;width:245px;height:auto;max-height:65vh;overflow:auto;box-sizing:border-box;padding:14px;border:0;border-left:1px solid #d6e0e6;background:#f7fafc}.joinbox-workspace>.joinbox-splitter-panel[hidden]{display:none}.splitter-panel-head{font-size:12px;color:#375260;margin-bottom:10px}.splitter-create{display:grid;grid-template-columns:1fr 70px;gap:8px}.splitter-create label{font-size:10px;color:#657b87;display:grid;gap:4px;min-width:0}.splitter-create input,.splitter-create select{width:100%;box-sizing:border-box;padding:6px;border:1px solid #c5d3dc;background:white;border-radius:4px;font-size:11px}.splitter-create-button{grid-column:1/-1;padding:5px;border:1px solid #c5d3dc;background:#fff;border-radius:4px;font-size:11px}.join-splitter-card{background:white;border:1px solid #cbd8df;border-radius:5px;margin-top:12px;overflow:hidden}.join-splitter-card>header{display:flex;height:auto;align-items:center;gap:8px;padding:8px;background:#eaf0f4;font-size:11px}.join-splitter-card>header strong{flex:1;min-width:0;overflow-wrap:anywhere}.join-splitter-card>header button{border:0;background:none;padding:0 3px;color:#8b5353}.splitter-device{display:flex;align-items:center;gap:0;padding:14px 9px}.splitter-input{display:flex;align-items:center;gap:3px;font-size:10px}.splitter-input i{width:15px;height:2px;background:#367fbd}.splitter-body{display:flex;align-items:center;justify-content:center;flex:1;align-self:stretch;min-height:64px;margin-left:4px;background:#e3eaf0;border:1px solid #a9bdca;border-radius:3px;font-size:11px;color:#486577;text-align:center}.splitter-outputs{min-width:36px}.splitter-outputs>div{display:flex;align-items:center;height:16px;font-size:9px;color:#536e7e}.splitter-outputs i{display:block;width:16px;height:1.5px;background:#5b94b8;margin-right:4px}.join-box-dialog .joinbox-actions .joinbox-delete{border-radius:0}.join-box-dialog .joinbox-actions .joinbox-splitter{border-radius:0 5px 5px 0}@media(max-width:650px){.joinbox-workspace{flex-direction:column}.joinbox-workspace>.join-diagram-scroll{width:100%;box-sizing:border-box}.joinbox-workspace>.joinbox-splitter-panel{width:100%;flex-basis:auto;border-left:0;border-top:1px solid #d6e0e6}}

/* Full-window Join Box workspace. */
.join-box-dialog,.join-box-dialog:has(.joinbox-splitter-panel:not([hidden])){position:fixed;inset:0;margin:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:0;border-radius:0;box-sizing:border-box;padding:0;overflow:hidden}.join-box-dialog[open]{display:flex;flex-direction:column}.join-box-dialog>.dialoghead,.join-box-dialog>.joinbox-actions,.join-box-dialog>.joinbox-edit-tools,.join-box-dialog>.joinbox-error,.join-box-dialog>.joinbox-status{flex:0 0 auto}.join-box-dialog>.joinbox-workspace{flex:1 1 auto;min-height:0;align-items:stretch;overflow:hidden}.join-box-dialog .joinbox-workspace>.join-diagram-scroll{max-height:none;min-height:0;overflow:auto;box-sizing:border-box}.join-box-dialog .joinbox-workspace>.joinbox-splitter-panel{max-height:none;overflow:auto}.join-box-dialog>.joinbox-status{margin:0;padding-top:6px;padding-bottom:6px}.join-box-dialog>.joinbox-error{margin:0}@media(max-width:650px){.join-box-dialog>.joinbox-workspace{flex-direction:row}.join-box-dialog .joinbox-workspace>.joinbox-splitter-panel{flex:0 0 220px;width:220px;border-left:1px solid #d6e0e6;border-top:0}.join-box-dialog .joinbox-workspace>.join-diagram-scroll{width:auto}}

/* Two equal working groups separated down the centre. */
.join-box-dialog .joinbox-workspace>.join-diagram-scroll{flex:1 1 50%;width:50%;max-width:50%;min-width:0}.join-box-dialog .joinbox-workspace>.joinbox-splitter-panel{flex:1 1 50%;width:50%;max-width:50%;min-width:0;padding:20px 28px;border-left:2px solid #aebfc9;background:#f8fafc}.joinbox-splitter-panel .splitter-panel-head{padding-bottom:12px;border-bottom:1px solid #d8e2e8;font-size:13px}.joinbox-splitter-panel .splitter-create{max-width:360px;grid-template-columns:minmax(0,1fr) 90px}.joinbox-splitter-panel .joinbox-splitter-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,260px));gap:14px;align-items:start}.joinbox-splitter-panel .join-splitter-card{margin-top:16px}.joinbox-splitter-panel .splitter-device{padding:18px 12px}

/* A restrained cassette-style splitter with clear numbered terminals. */
.joinbox-splitter-panel .joinbox-splitter-list{grid-template-columns:repeat(auto-fit,minmax(230px,290px));gap:18px}.joinbox-splitter-panel .join-splitter-card{border:1px solid #bdcdd7;border-radius:8px;background:white;box-shadow:0 3px 10px #263f4b0a;overflow:hidden}.join-splitter-card>header{padding:10px 12px;background:#edf3f7;border-bottom:1px solid #d1dfe7;gap:8px}.join-splitter-card>header strong{font-size:12px;color:#314f61;font-weight:600}.join-splitter-card>header>span{padding:3px 7px;background:#fff;border:1px solid #c5d7e3;border-radius:4px;font-size:10px;color:#45718a;white-space:nowrap}.join-splitter-card>header button{font-size:16px;line-height:18px;border-radius:3px;color:#8797a1}.join-splitter-card>header button:hover{background:#fbe8e8;color:#b54545}.joinbox-splitter-panel .splitter-device{padding:20px 14px;gap:0;background:#fff}.splitter-input{position:relative;gap:5px;color:#426477;font-weight:600;font-size:10px}.splitter-input i{width:21px;height:2px;background:#397fb0;position:relative}.splitter-input i:before{content:"";position:absolute;left:-3px;top:-3px;width:6px;height:6px;border:1px solid #397fb0;border-radius:50%;background:white}.splitter-body{margin-left:8px;margin-right:0;min-height:76px;background:linear-gradient(90deg,#e7eff5,#f4f8fb 50%,#e4edf4);border:1px solid #a4bdce;border-radius:5px;color:#416b85;font-size:12px;font-weight:600;line-height:1.7;box-shadow:inset 4px 0 0 #83a8bf,inset -4px 0 0 #83a8bf}.splitter-outputs{min-width:48px;padding:3px 0}.splitter-outputs>div{height:20px;font-size:10px;font-variant-numeric:tabular-nums;color:#426275;gap:5px}.splitter-outputs i{position:relative;width:22px;height:2px;margin-right:5px;background:#4a8caf}.splitter-outputs i:after{content:"";position:absolute;right:-3px;top:-3px;width:6px;height:6px;box-sizing:border-box;border:1px solid #4a8caf;border-radius:50%;background:#fff}.splitter-outputs span{display:flex;align-items:center;justify-content:center;min-width:22px;height:16px;background:#edf4f8;border:1px solid #d6e4ec;border-radius:3px;color:#446779;box-sizing:border-box}.splitter-create{padding:12px;border:1px solid #d8e3e9;border-radius:6px;background:#fff}.splitter-create-button{background:#eef4f7;color:#466779;min-height:28px;font-weight:500}.splitter-create-button:hover{background:#e2edf3;border-color:#a9c0cf}

.joinbox-splitter-panel .joinbox-splitter-list{grid-template-columns:repeat(auto-fit,minmax(310px,390px))}.splitter-input{display:flex;flex-direction:column;align-items:flex-end;gap:6px;min-width:75px}.splitter-input>div{display:flex;align-items:center;gap:5px}.splitter-input .splitter-port-comment{width:78px}.splitter-outputs{min-width:130px}.splitter-outputs>div{height:25px;gap:4px}.splitter-port-comment{width:85px;min-width:0;box-sizing:border-box;height:22px;border:1px solid #c8d7e1;border-radius:3px;background:#fff;padding:2px 5px;font-size:10px;font-weight:400;color:#38586a}.splitter-port-comment::placeholder{color:#a2b1bc}.splitter-port-comment:focus{outline:2px solid #7da2b7;outline-offset:-1px}.splitter-body{min-width:52px}.splitter-outputs i{width:16px;margin-right:3px}

/* Keep comments toward the cassette and leave the external lead tips clear. */
.splitter-input{flex-direction:row-reverse;align-items:center;gap:7px;min-width:0}.splitter-input>div{flex-direction:row;gap:4px}.splitter-input .splitter-port-comment{width:78px}.splitter-outputs>div{display:flex;gap:5px}.splitter-outputs .splitter-port-comment{order:0}.splitter-outputs span{order:1}.splitter-outputs i{order:2;margin-left:0;margin-right:0;width:22px}.splitter-outputs{padding-left:6px;min-width:0}.splitter-input i{margin-left:0}.splitter-device{overflow:visible}.joinbox-splitter-panel .joinbox-splitter-list{grid-template-columns:repeat(auto-fit,minmax(350px,440px))}

.splitter-outputs>div i{background:var(--splitter-core-color)}.splitter-outputs>div i:after{border-color:var(--splitter-core-color)}.splitter-outputs>div span{background:var(--splitter-core-color);color:var(--splitter-core-ink);border-color:#0002;font-weight:500}.splitter-input i{background:#287cca}.splitter-input i:before{border-color:#287cca}

/* Alternate fan-out design with a tapered optical block. */
.joinbox-splitter-panel .join-splitter-card{border-radius:4px;box-shadow:none;border-color:#bdcbd4}.join-splitter-card>header{background:white;border-bottom:1px solid #dde6eb;padding:11px 13px}.join-splitter-card>header>span{background:#eaf4f8;border:0;border-radius:3px;color:#32708b;padding:4px 8px}.joinbox-splitter-panel .splitter-device{background:linear-gradient(90deg,#f8fbfd,#fff);padding:18px 12px}.splitter-body{position:relative;clip-path:polygon(0 35%,100% 0,100% 100%,0 65%);border:0;border-radius:0;background:linear-gradient(90deg,#277c9c,#56a2ba);color:white;text-shadow:0 1px 1px #164b6650;box-shadow:none;min-width:68px;min-height:86px;font-size:11px;line-height:1.8;margin-left:8px;margin-right:0;padding-left:8px;box-sizing:border-box}.splitter-outputs{padding-top:0;padding-bottom:0;padding-left:8px}.splitter-outputs>div{height:26px}.splitter-outputs span{border-radius:2px;min-width:24px;height:18px}.splitter-port-comment{background:#fff;border-color:#d1dfe7;border-radius:2px;height:23px}.splitter-input>div>span{font-size:9px;letter-spacing:.4px}.splitter-panel-head{color:#2b657c}.splitter-create{box-shadow:none;border-radius:4px}

/* Alternate slim metal module. */
.joinbox-splitter-panel .join-splitter-card{border-radius:7px;border-color:#c6d0d7;background:#fff;box-shadow:0 2px 7px #213d4b08}.join-splitter-card>header{background:#f4f6f8;padding:9px 12px}.join-splitter-card>header strong{font-size:11px;color:#405460}.join-splitter-card>header>span{background:#fff;border:1px solid #d6e0e6;color:#536e7c}.joinbox-splitter-panel .splitter-device{background:#fff;padding:20px 14px}.splitter-body{clip-path:none;border:1px solid #99aeba;border-radius:4px;background:linear-gradient(90deg,#c0ced7 0,#e7eef2 15%,#f4f7f9 50%,#dae4ea 85%,#b4c5d0 100%);color:#435e6e;text-shadow:none;box-shadow:inset 0 1px 0 #fff,inset 0 -1px 0 #9aafbb60;min-width:46px;max-width:52px;min-height:90px;margin-left:8px;padding:0;font-size:10px;letter-spacing:.3px}.splitter-outputs{padding-left:8px}.splitter-outputs>div{height:25px}.splitter-outputs span{background:#fff;color:var(--splitter-core-color);border:1px solid var(--splitter-core-color);border-left:4px solid var(--splitter-core-color);font-weight:600;min-width:25px}.splitter-outputs>div[title="White"] span{color:#5c6f7b}.splitter-input>div>span{color:#58707d}.splitter-port-comment{background:#fafcfd;border:0;border-bottom:1px solid #bdcdd7;border-radius:0;height:22px}.splitter-port-comment:focus{background:white}

.splitter-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.splitter-design{font-size:11px;background:#fff;color:#4d6572;border:1px solid #c9d7df;border-radius:4px;padding:5px 7px}.joinbox-splitter-panel[data-design=board] .splitter-body{max-width:none;flex:1;min-width:60px;background:#edf5f2;border:1px solid #96bbae;color:#3d7060;border-radius:6px;box-shadow:inset 4px 0 0 #92b9a8,inset -4px 0 0 #92b9a8}.joinbox-splitter-panel[data-design=board] .splitter-outputs span{background:var(--splitter-core-color);color:var(--splitter-core-ink);border:1px solid #0002;border-radius:4px}.joinbox-splitter-panel[data-design=board] .splitter-port-comment{background:white;border:1px solid #d5e1dd;border-radius:4px}.joinbox-splitter-panel[data-design=dark] .splitter-body{max-width:64px;min-width:60px;background:#34444f;border:1px solid #25343f;color:#e9f1f6;border-radius:5px;box-shadow:inset 4px 0 0 #617a8b,inset -4px 0 0 #617a8b}.joinbox-splitter-panel[data-design=dark] .join-splitter-card>header{background:#34444f}.joinbox-splitter-panel[data-design=dark] .join-splitter-card>header strong{color:#eaf1f5}.joinbox-splitter-panel[data-design=dark] .splitter-outputs span{background:var(--splitter-core-color);color:var(--splitter-core-ink);border:1px solid #0002}.joinbox-splitter-panel[data-design=diagram] .splitter-body{max-width:none;min-width:68px;background:white;border:1.5px solid #657d8d;color:#466576;border-radius:0;box-shadow:none;clip-path:polygon(0 0,100% 15%,100% 85%,0 100%)}.joinbox-splitter-panel[data-design=diagram] .join-splitter-card{border-radius:0;box-shadow:none}.joinbox-splitter-panel[data-design=diagram] .splitter-port-comment{background:white;border:1px solid #d6dfe5;border-radius:0}

.joinbox-workspace{position:relative}.splitter-link-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:6;overflow:hidden}.splitter-port-button{height:20px;min-width:25px;box-sizing:border-box;border:1px solid #a4bac8;border-radius:3px;background:#fff;color:#48687a;font-size:10px;padding:0 4px;cursor:crosshair;order:1}.splitter-port-button:hover,.splitter-port-button:focus-visible{outline:2px solid #3d8bae;outline-offset:2px}.splitter-port-button[data-linked=true]{box-shadow:0 0 0 2px #7fa794}.splitter-outputs .splitter-port-button{background:var(--splitter-core-color);color:var(--splitter-core-ink);border-color:#0002}.splitter-port-button[data-linked=true]:after{content:'•';padding-left:3px}.splitter-input>div{gap:3px}

.splitter-link-overlay path{shape-rendering:geometricPrecision;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.splitter-input i,.splitter-outputs i{height:2px;border-radius:1px;box-shadow:none}.splitter-input i:before,.splitter-outputs i:after{opacity:0;transition:opacity .12s}.splitter-input>div:hover i:before,.splitter-outputs>div:hover i:after{opacity:1}.splitter-port-button[data-linked=true]{box-shadow:none;outline:1px solid #83a494;outline-offset:1px}

/* Reserve a clear lower corridor for the splitter patch leads. */
.join-box-dialog>.joinbox-workspace{padding-bottom:56px;box-sizing:border-box;background:#f5f8fa}.join-box-dialog .joinbox-workspace>.join-diagram-scroll{background:#fff}.joinbox-workspace:after{content:"";position:absolute;left:0;right:0;bottom:55px;height:1px;background:#dce5eb;pointer-events:none}.joinbox-workspace>.splitter-link-overlay{z-index:6}

.joinbox-add-options:not([hidden]){display:flex;gap:6px;align-items:center;padding:8px 20px;border-bottom:1px solid #dce5ea;background:#f8fbfc}.joinbox-add-options button{width:auto;padding:6px 12px;background:#fff;border:1px solid #c5d5df;border-radius:4px;font-size:12px;color:#3d5b6c}.joinbox-add-options[hidden]{display:none}.join-box-dialog>.joinbox-add-options{flex:0 0 auto}.splitter-cables-workspace{display:grid;grid-template-columns:minmax(310px,1fr) 235px;gap:36px;align-items:start;margin-top:16px;min-width:581px}.joinbox-splitter-panel .splitter-cables-workspace .joinbox-splitter-list{grid-template-columns:minmax(310px,1fr);gap:12px}.splitter-cables-workspace .join-splitter-card{margin-top:0}.splitter-fiber-group>b{display:block;font-size:12px;color:#546d7c;margin-bottom:12px}.splitter-fiber-columns{display:flex;flex-direction:column;gap:32px;width:235px;min-width:235px}.splitter-fiber-empty{font-size:11px;color:#8b9da8;line-height:1.6;padding:15px 8px;border:1px dashed #cbd9e1;margin:0}.splitter-fiber-list .join-all-column{background:#fff}.splitter-fiber-list .join-fiber-id{font-size:11px}

.splitter-cables-workspace{column-gap:80px;min-width:625px}

.splitter-cables-workspace{column-gap:110px;min-width:655px}

.join-box-dialog .joinbox-actions .joinbox-splitter{border-radius:0}.join-box-dialog .joinbox-actions .joinbox-print{border-radius:0 5px 5px 0}

/* Slightly more compact Join Box content, preserving the established layout. */
.join-box-dialog .join-core-table-row{height:20px;min-height:20px;max-height:20px}.join-box-dialog .join-core-table-row .join-core-note{height:20px;min-height:20px;max-height:20px;font-size:10px;line-height:18px}.join-box-dialog .join-all-column .join-core-table-row .join-core-row{height:20px;min-height:20px;max-height:20px;line-height:19px}.join-box-dialog .join-core-table-row .join-core-number{font-size:10px}.join-box-dialog .join-core-table-row .join-core-index{font-size:10px}.join-core-tip{height:19px}.join-core-tip:before{top:8px}.join-core-tip:after{top:5px}.join-core-table-head span{font-size:9px}.join-fiber-id>strong{font-size:9px}.join-fiber-id>span,.join-fiber-id .join-total-cores{font-size:9px}.join-tube-block:after{font-size:11px}.join-splitter-card>header strong{font-size:10px}.splitter-body{font-size:9px;min-height:76px}.splitter-outputs>div{height:23px}.splitter-port-comment{font-size:9px;height:20px}.splitter-port-button{font-size:9px;height:18px}.splitter-input .splitter-port-comment{height:20px}.joinbox-splitter-panel .splitter-device{padding-top:16px;padding-bottom:16px}

/* Scale the complete content together instead of only shrinking labels. */
.join-box-dialog>.joinbox-workspace{zoom:.85}


/* Highlight only the hovered splice while retaining the original smooth curves. */
.join-all-paths:has(.join-connection-hit:hover) .join-connection-line{opacity:.12}.join-all-paths .join-connection-hit:hover+.join-connection-line{opacity:1;stroke-width:3;filter:drop-shadow(0 0 1px #54788a60)}.join-all-paths:has(.join-connection-line[data-selected=true]) .join-connection-line{opacity:.22}.join-all-paths .join-connection-line[data-selected=true]{opacity:1;stroke-width:3}.join-all-paths .join-connection-hit:hover+.join-connection-line{opacity:1!important}.join-print-snapshot .join-connection-line{opacity:1!important;filter:none!important}

/* Splitter patch leads get the same pointer focus as the main splices. */
.splitter-link-overlay .splitter-link-hit{pointer-events:stroke;cursor:pointer}.splitter-link-overlay .splitter-link-line{pointer-events:none;transition:opacity .1s,stroke-width .1s}.splitter-link-overlay:has(.splitter-link-hit:hover) .splitter-link-line{opacity:.12}.splitter-link-overlay .splitter-link-hit:hover+.splitter-link-line{opacity:1;stroke-width:3;filter:drop-shadow(0 0 1px #52758a60)}.joinbox-workspace:has(.splitter-link-hit:hover) .join-connection-line{opacity:.12}.joinbox-workspace:has(.join-connection-hit:hover) .splitter-link-line{opacity:.12}.join-print-snapshot .splitter-link-line{opacity:1!important;filter:none!important}

.splitter-create[hidden]{display:none}

/* One common scroll surface for both groups and their connection overlay. */
.join-box-dialog>.joinbox-scroll{flex:1 1 auto;min-height:0;overflow:auto;zoom:.85;background:#f5f8fa}.joinbox-scroll>.joinbox-workspace{display:flex;position:relative;min-height:100%;height:auto;overflow:visible;padding-bottom:56px;box-sizing:border-box;align-items:stretch;zoom:1;min-width:1380px}.join-box-dialog .joinbox-workspace>.join-diagram-scroll,.join-box-dialog .joinbox-workspace>.joinbox-splitter-panel{overflow:visible;max-height:none;height:auto;min-height:0;flex:1 0 50%;width:50%;max-width:none;box-sizing:border-box}.join-box-dialog .joinbox-workspace>.join-diagram-scroll{background:white}.join-print-snapshot>.joinbox-scroll{overflow:visible!important;zoom:1!important;flex:none!important}.join-print-snapshot .joinbox-workspace{height:auto!important;max-height:none!important;overflow:visible!important}

/* Pack each side independently so a short cable never inherits its neighbour's height. */
.join-all-diagram>.join-all-columns{grid-auto-rows:1px;row-gap:0;align-content:start;align-items:start;height:auto}.join-all-diagram>.join-all-columns>.join-all-column{align-self:start;height:auto;min-height:0}

/* Output ports and FTTH cores use the same row pitch and baseline. */
.joinbox-splitter-panel .splitter-outputs>div{height:20px;min-height:20px;max-height:20px;box-sizing:border-box}.joinbox-splitter-panel .splitter-outputs .splitter-port-comment{height:18px}.splitter-cables-workspace>.joinbox-splitter-list,.splitter-cables-workspace>.splitter-fiber-group{box-sizing:border-box}

.splitter-fiber-group[hidden]{display:none!important}

/* Vertical FTTH stacks must use their content height, never the cable width as flex-basis. */
.splitter-fiber-list>.splitter-fiber-columns{display:flex;flex-direction:column;gap:24px;align-items:flex-start;justify-content:flex-start;height:auto;min-height:0}.splitter-fiber-columns>.join-all-column{flex:0 0 auto;flex-basis:auto;width:235px;height:auto;min-height:0;max-height:none;margin:0;align-self:flex-start}

.patch-designer .patch-top-actions{display:flex;align-items:center;gap:7px;position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid #dce5eb;padding:10px 0}.patch-designer .patch-top-actions button{width:auto;flex:0 0 auto;padding:6px 12px;min-height:30px;border:1px solid #cbd9e2;border-radius:5px;background:#f7fafc;color:#3f5c6d;font-size:12px}.patch-designer .patch-top-actions .danger{color:#b34d4d;background:#fff8f8;border-color:#e7cccc}

.odf-map-icon{background:transparent;border:0}.odf-map-icon svg{display:block;width:36px;height:30px;filter:drop-shadow(0 2px 2px #1a39463a)}

.odf-map-icon svg{width:26px;height:22px}

.odf-map-icon svg{width:20px;height:17px}

/* Cleaner ODF faceplate with distinct connector sockets and port labels. */
.patch-designer .patch-ports{gap:10px;padding:16px;background:#edf2f5;border:1px solid #bcccd6;border-radius:7px;box-shadow:inset 0 1px 0 #fff;margin:14px 0}.patch-designer .patch-port{position:relative;min-height:100px;padding:11px 6px 8px;background:#fff;color:#3e596b;border:1px solid #c9d7df;border-radius:5px;box-shadow:0 1px 3px #2342510a;gap:5px}.patch-designer .patch-port:hover{border-color:#86aabe;background:#f8fcfe}.patch-designer .patch-port .socket{position:relative;display:block;width:28px;height:22px;background:#263d4b;border:4px solid #9cabb4;border-radius:3px;box-shadow:inset 0 1px 2px #07192370,0 1px 0 #fff;box-sizing:border-box}.patch-designer .patch-port .socket:before{content:"";position:absolute;left:5px;right:5px;top:3px;bottom:2px;border:1px solid #a3b5bf;border-radius:1px}.patch-designer .patch-port .socket:after{content:"";position:absolute;left:6px;right:6px;top:-5px;height:3px;background:#dae3e9;border-radius:1px}.patch-designer .patch-port.assigned .socket{border-color:var(--port-color,#49c6a2)}.patch-designer .patch-port>b{font-size:12px;font-weight:600;line-height:17px;color:#334e60;font-variant-numeric:tabular-nums}.patch-designer .patch-port>small{font-size:9px;line-height:13px;color:#7a8f9b;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.patch-designer .patch-port>em{font-style:normal;font-size:8px;line-height:14px;border:1px solid #d7e2e9;background:#f1f5f7;color:#7c929e;padding:0 5px;border-radius:3px}.patch-designer .patch-port.assigned>em{color:#427f6c;background:#edf8f2;border-color:#cee7db}.patch-designer .patch-port.selected-port{outline:2px solid #448faf;outline-offset:2px;background:#f0f8fc;border-color:#87b5ca}.patch-designer .patch-port:focus-visible{outline:2px solid #448faf;outline-offset:2px}

/* ODF ports use neutral sockets; assignments are indicated by text. */
.patch-designer .patch-port .socket,.patch-designer .patch-port.assigned .socket{border-color:#9cabb4!important;background:#263d4b!important}.patch-designer .patch-port.assigned>em{color:#536775;background:#eef2f5;border-color:#d3dce2}.patch-designer .port-color-palette,.patch-designer label:has(input[name="color"]){display:none!important}

/* Twelve sockets per rack row, with mounting ears on both sides. */
.patch-designer{width:min(1180px,96vw)}
.patch-designer .patch-ports{position:relative;display:grid;grid-template-columns:repeat(12,minmax(54px,1fr));gap:10px 8px;padding:18px 30px;margin:18px 0;min-width:820px;border:1px solid #98aab5;border-radius:4px;background:linear-gradient(#edf1f4,#dce4e9);box-shadow:inset 0 1px 0 #fff,0 2px 4px #233d4c15}
.patch-designer .patch-ports:before,.patch-designer .patch-ports:after{content:"";position:absolute;top:0;bottom:0;width:21px;background:radial-gradient(ellipse 3px 5px at 50% 14px,#435460 95%,transparent 100%),radial-gradient(ellipse 3px 5px at 50% calc(100% - 14px),#435460 95%,transparent 100%),linear-gradient(90deg,#a8b6c0,#d0d9df);border:1px solid #8d9faa;border-radius:3px;box-shadow:inset 0 1px 0 #eef3f6;pointer-events:none}
.patch-designer .patch-ports:before{left:0}.patch-designer .patch-ports:after{right:0}
.patch-designer .patch-port{min-height:94px;padding:10px 3px 7px}

/* Refined neutral rack faceplate and compact port information. */
.patch-designer .patch-ports{column-gap:7px;row-gap:16px;padding:22px 34px;background:linear-gradient(180deg,#f1f4f6 0%,#e6ecef 45%,#dce4e9 100%);border-color:#98a9b4;box-shadow:inset 0 2px 0 #fff,inset 0 -2px 0 #bcc9d1,0 3px 8px #243e4d12}
.patch-designer .patch-port{border:1px solid #b9c7d0;border-radius:4px;background:linear-gradient(#fff,#f5f7f9);box-shadow:0 2px 3px #344e5f0d,inset 0 1px 0 #fff;gap:4px;transition:border-color .12s,box-shadow .12s,background .12s}
.patch-designer .patch-port .socket{width:29px;height:23px;border-radius:2px;box-shadow:inset 0 2px 3px #07192370,0 1px 0 #fff,0 0 0 1px #687c89}
.patch-designer .patch-port>b{display:block;min-width:26px;padding:0 4px;font-size:11px;line-height:17px;letter-spacing:.5px;border-bottom:1px solid #dce4e9;color:#354e5e}
.patch-designer .patch-port>small{font-size:9px;line-height:12px;color:#687d8c}
.patch-designer .patch-port>em{font-size:8px;line-height:13px;border-radius:2px;background:#edf1f4;color:#657987}
.patch-designer .patch-port:hover{background:#fff;border-color:#819eaf;box-shadow:0 2px 5px #344e5f1c}
.patch-designer .patch-port.selected-port{background:#edf5f9;outline:2px solid #648a9e;outline-offset:2px;box-shadow:0 0 0 4px #648a9e12}
.patch-designer .odf-summary{background:transparent;border-bottom:1px solid #dce4e9;border-radius:0;padding:12px 0;color:#657a89;font-size:11px}
.patch-designer .ops-heading{border-bottom:1px solid #dce4e9;padding-bottom:14px}.patch-designer .ops-heading small{letter-spacing:1.3px;color:#738794;font-size:9px}.patch-designer .ops-heading h2{margin:5px 0 0;color:#2e495a;font-size:20px}

/* Separate rack brackets, inset from the faceplate edges. */
.patch-designer .patch-ports:before,.patch-designer .patch-ports:after{top:10px;bottom:10px;width:22px;border:1px solid #8497a4;border-radius:3px;background:radial-gradient(ellipse 3px 6px at 50% 12px,#304653 0 62%,#8e9faa 66% 82%,transparent 86%),radial-gradient(ellipse 3px 6px at 50% calc(100% - 12px),#304653 0 62%,#8e9faa 66% 82%,transparent 86%),linear-gradient(90deg,#9cabb5 0%,#d4dde3 25%,#e2e9ed 65%,#a7b6c0 100%);box-shadow:inset 0 1px 0 #f6f9fb,inset 0 -1px 0 #8194a1,0 1px 2px #243e4d24}
.patch-designer .patch-ports:before{left:3px;border-right:2px solid #8396a3}.patch-designer .patch-ports:after{right:3px;border-left:2px solid #8396a3}

/* Fixed blue pigtail adapters on the ODF faceplate. */
.patch-designer .patch-port .socket,.patch-designer .patch-port.assigned .socket{border-color:#2684cf!important;background:#104779!important;box-shadow:inset 0 2px 3px #092b55,0 1px 0 #fff,0 0 0 1px #17609b}.patch-designer .patch-port .socket:before{border-color:#8cc4ed}.patch-designer .patch-port .socket:after{background:#73b5e5}

/* Matte blue connector plastic without glossy highlights. */
.patch-designer .patch-port .socket,.patch-designer .patch-port.assigned .socket{border-color:#477ca5!important;background:#294e6c!important;box-shadow:inset 0 1px 1px #18394d55,0 0 0 1px #3e6888}.patch-designer .patch-port .socket:before{border-color:#7599b4}.patch-designer .patch-port .socket:after{background:#5a87a8}

/* Plain molded blue adapter with a recessed connector opening. */
.patch-designer .patch-port .socket,.patch-designer .patch-port.assigned .socket{width:30px;height:24px;border:5px solid #347eb5!important;border-radius:2px;background:#23475f!important;box-shadow:0 0 0 1px #2f6890}.patch-designer .patch-port .socket:before{left:4px;right:4px;top:2px;bottom:2px;border:1px solid #597a90;border-radius:0}.patch-designer .patch-port .socket:after{left:5px;right:5px;top:-5px;height:2px;background:#347eb5;border-radius:0}

/* Blue adapter body surrounding a circular recessed ferrule opening. */
.patch-designer .patch-port .socket,.patch-designer .patch-port.assigned .socket{position:relative;width:30px;height:24px;border:1px solid #1666ab!important;border-radius:2px;background:#1976c5!important;box-shadow:none}.patch-designer .patch-port .socket:before{left:50%;top:50%;right:auto;bottom:auto;width:10px;height:10px;box-sizing:border-box;transform:translate(-50%,-50%);border:2px solid #9cabb4;border-radius:50%;background:#263d4b}.patch-designer .patch-port .socket:after{left:8px;right:8px;top:-2px;height:3px;background:#1976c5;border:1px solid #1666ab;border-bottom:0;border-radius:1px 1px 0 0}

/* Adapter face matched to the supplied blue SC reference. */
.patch-designer .patch-port .socket,.patch-designer .patch-port.assigned .socket{position:relative;overflow:visible;width:32px;height:25px;box-sizing:border-box;border:3px solid #168dca!important;border-radius:2px;background:linear-gradient(90deg,#116596 0 12%,#0879b6 12% 23%,#12476b 23% 77%,#0879b6 77% 88%,#116596 88%)!important;box-shadow:inset 0 2px 0 #104a73,inset 0 -2px 0 #103c5e,0 0 0 1px #1474ad}.patch-designer .patch-port .socket:before{content:"";position:absolute;left:50%;top:50%;right:auto;bottom:auto;width:12px;height:12px;box-sizing:border-box;transform:translate(-50%,-50%);border:2px solid #a5adb0;border-radius:50%;background:#303435;box-shadow:0 0 0 2px #0877ba,0 0 0 3px #126194}.patch-designer .patch-port .socket:after{content:"";position:absolute;left:-5px;right:auto;top:6px;width:3px;height:8px;border:0;border-radius:1px;background:#bac0c3;box-shadow:33px 0 0 #bac0c3}

.patch-designer .socket .adapter-key{position:absolute;display:block;left:50%;bottom:-4px;transform:translateX(-50%);width:5px;height:5px;background:#24435a;border:0;border-radius:1px 1px 0 0;box-shadow:inset 1px 0 0 #0c507d,inset -1px 0 0 #0c507d;pointer-events:none}

.patch-designer .socket .adapter-key{top:-4px;bottom:auto;border-radius:0 0 1px 1px}

/* External folded rack ears with slotted mounting holes. */
.patch-designer .patch-ports{margin:20px 20px;padding:22px 18px;border-radius:3px;background:#e5eaee;box-shadow:inset 0 1px 0 #fff,inset 0 -2px 0 #b6c2ca,0 2px 3px #243e4d14}
.patch-designer .patch-ports:before,.patch-designer .patch-ports:after{top:12px;bottom:12px;width:21px;border:1px solid #8b9ba6;border-radius:2px;background:radial-gradient(ellipse 3px 6px at 50% 11px,#354550 0 65%,#aab6be 70% 85%,transparent 90%),radial-gradient(ellipse 3px 6px at 50% calc(100% - 11px),#354550 0 65%,#aab6be 70% 85%,transparent 90%),#c6d0d7;box-shadow:inset 0 1px 0 #edf2f5,0 1px 2px #243e4d20}
.patch-designer .patch-ports:before{left:-20px;border-right:3px solid #93a3ae}.patch-designer .patch-ports:after{right:-20px;border-left:3px solid #93a3ae}

/* Full-height mounting ears aligned with the panel body. */
.patch-designer .patch-ports:before,.patch-designer .patch-ports:after{top:-1px;bottom:-1px;border-radius:2px}

/* Front elevation: 482.6 mm overall width, 44.45 mm per 12-port row. */
.patch-designer .patch-ports{box-sizing:border-box;min-width:820px;aspect-ratio:calc(482.6 / 44.45 / var(--rack-units,2));padding:8px 18px;grid-auto-rows:minmax(0,1fr);row-gap:4px;column-gap:7px;background:#e5eaee}
.patch-designer .patch-port{min-height:0;padding:5px 2px 3px;gap:2px;justify-content:center;border-radius:2px;box-shadow:none}
.patch-designer .patch-port .socket{flex-shrink:0}.patch-designer .patch-port>b{font-size:10px;line-height:13px}.patch-designer .patch-port>small{font-size:8px;line-height:10px}.patch-designer .patch-port>small:empty{display:none}.patch-designer .patch-port>em{font-size:7px;line-height:10px;padding:0 3px}

.patch-designer .odf-identity{display:flex;align-items:center;gap:12px;margin-top:14px;font-size:12px;color:#425d6e}.patch-designer .odf-name{width:min(420px,75%);padding:8px 10px;border:1px solid #c5d2db;border-radius:4px;font:inherit}

.patch-designer .patch-port-form .odf-hidden-cable{display:none!important}

.patch-designer .patch-port>em{font-size:10px;line-height:16px;padding:1px 5px;font-weight:500;white-space:nowrap}

.patch-designer .patch-port>small{font-size:11px;line-height:14px}.patch-designer .patch-port>em{font-size:12px;line-height:18px;padding:1px 4px}

.patch-designer .patch-port>small,.patch-designer .patch-port>em,.patch-designer .patch-port.assigned>em{font-size:11px;line-height:14px;font-weight:400;font-style:normal;color:#536b7b;background:transparent;border:0;border-radius:0;padding:0;box-shadow:none}.patch-designer .patch-port>b{margin-bottom:5px}.patch-designer .patch-port>em{text-transform:capitalize}

.patch-designer .patch-port-form{grid-template-columns:minmax(90px,.6fr) minmax(200px,2fr) minmax(150px,1fr);align-items:start}.patch-designer .patch-port-form>input[type="hidden"]{display:none}.patch-designer .patch-port-form>.port-state-note,.patch-designer .patch-port-form>.patch-error,.patch-designer .patch-port-form>.patch-save-status{grid-column:1 / -1}

.odf-port-table{width:100%;border-collapse:collapse;margin:18px 0;font-size:12px}.odf-port-table th,.odf-port-table td{border:1px solid #c9d5dd;padding:8px;text-align:left}.odf-port-table th{background:#edf2f5;color:#415d6d}.odf-port-table td:first-child{width:70px;font-variant-numeric:tabular-nums}.odf-port-table td:last-child{width:190px}.odf-port-table input,.odf-port-table select{width:100%;box-sizing:border-box;padding:8px;border:1px solid #ccd8e0;border-radius:3px;background:#fff;color:#334f60;font:inherit}.odf-port-table .active-row td{background:#edf5fa}.odf-port-table tbody tr:nth-child(even):not(.active-row){background:#f8fafb}

.odf-port-table{font-size:11px;margin:12px 0}.odf-port-table th,.odf-port-table td{padding:4px 7px}.odf-port-table input,.odf-port-table select{padding:4px 6px;min-height:26px;height:26px;border-radius:2px;font-size:11px;line-height:16px}.odf-port-table td:first-child{width:50px}.odf-port-table td:last-child{width:155px}

.odf-port-table th,.odf-port-table td{padding:2px 6px}.odf-port-table input,.odf-port-table select{height:22px;min-height:22px;padding:2px 5px;font-size:11px;line-height:16px}

/* This rack model supports up to 24 ports per U, in twelve-port rows. */
.patch-designer .patch-ports.rack-double-density{padding-top:3px;padding-bottom:3px;row-gap:2px}.patch-designer .rack-double-density .patch-port{padding:1px;gap:0}.patch-designer .rack-double-density .patch-port .socket{transform:scale(.7);margin:-4px 0;flex-shrink:0}.patch-designer .rack-double-density .patch-port>b{font-size:9px;line-height:10px;margin-bottom:0;border:0}.patch-designer .rack-double-density .patch-port>small,.patch-designer .rack-double-density .patch-port>em{font-size:9px;line-height:10px}

.patch-designer .odf-capacity{padding:7px 10px;border:1px solid #c5d2db;border-radius:4px;font:inherit;background:#fff;color:#425d6e}

.odf-port-table td:nth-child(3){width:130px}.odf-port-table td:last-child{width:300px}.odf-mapping{display:grid;grid-template-columns:minmax(130px,1fr) 88px;gap:6px}.odf-mapping select{min-width:0}.odf-port-table th{white-space:nowrap}

.odf-connectivity{margin:22px 0}.odf-connectivity h3{font-size:13px;color:#425d6d}.odf-join-canvas{position:relative;display:grid;grid-template-columns:235px 190px;justify-content:space-between;gap:150px;padding:8px 0;min-width:600px}.odf-join-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.odf-join-wire{fill:none;stroke-width:2;pointer-events:stroke;transition:stroke-width .12s}.odf-join-lines:has(.odf-join-wire:hover) .odf-join-wire:not(:hover){opacity:.15}.odf-join-wire:hover{stroke-width:4}.odf-fiber-card{margin-bottom:24px}.odf-fiber-title{height:30px;box-sizing:border-box;padding:7px;background:#edf1f4;border:1px solid #617480;font-size:11px}.odf-core,.odf-target{position:relative;display:flex;align-items:center;gap:9px;width:100%;height:23px;min-height:23px;padding:2px 7px;border:1px solid #7d8e98;border-top:0;border-radius:0;font-size:11px;background:#fff;color:#304a59}.odf-core{background:var(--core-color);color:#fff;text-shadow:0 1px 2px #0009;cursor:crosshair;touch-action:none;justify-content:space-between}.odf-core span:first-child{background:#fff;color:#304a59;text-shadow:none;min-width:22px;text-align:center}.odf-core i,.odf-target i{position:absolute;width:7px;height:7px;border:1px solid #426b82;background:#fff;border-radius:50%;z-index:2}.odf-core i{right:-4px}.odf-target i{left:-4px}.odf-core.chosen{outline:2px solid #193b52;outline-offset:1px}.odf-target{cursor:crosshair}.odf-target:hover{background:#e2f0f8}.odf-target small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.odf-port-table th:last-child,.odf-port-table td:last-child{display:none}

.patch-designer{width:min(1500px,97vw)}.odf-detail-workspace{display:grid;grid-template-columns:minmax(340px,42fr) minmax(530px,58fr);align-items:start;margin-top:18px;border-top:1px solid #c8d5de}.odf-detail-workspace>.odf-bulk-form{grid-column:1;grid-row:1;padding:12px 20px 12px 0;min-width:0}.odf-detail-workspace>.odf-connectivity{grid-column:2;grid-row:1;margin:0;padding:12px 0 12px 24px;border-left:1px solid #adbeca;min-width:0}.odf-detail-workspace .odf-port-table{margin-top:0}.odf-detail-workspace .odf-join-canvas{grid-template-columns:190px 145px;gap:110px;min-width:470px}.odf-detail-workspace .odf-connectivity h3{margin:0 0 12px}.odf-detail-workspace .odf-port-table td:nth-child(3){width:110px}

.odf-detail-workspace .odf-join-canvas{grid-template-columns:145px 190px}.odf-join-canvas>.odf-join-targets{grid-column:1;grid-row:1}.odf-join-canvas>.odf-join-fibers{grid-column:2;grid-row:1}.odf-core i{right:auto;left:-4px}.odf-target i{left:auto;right:-4px}

/* Align the information table and connection endpoints row for row. */
.odf-detail-workspace>.odf-bulk-form{padding-top:12px}.odf-detail-workspace>.odf-connectivity{padding-top:12px}.odf-detail-workspace .odf-join-canvas{padding-top:0;padding-bottom:0}.odf-detail-workspace .odf-port-table{table-layout:fixed;margin:0}.odf-detail-workspace .odf-port-table th{height:30px;box-sizing:border-box;padding:4px 6px;font-size:11px}.odf-detail-workspace .odf-port-table td{height:28px;box-sizing:border-box;padding:2px 6px}.odf-detail-workspace .odf-port-table th:first-child{width:48px}.odf-detail-workspace .odf-port-table th:nth-child(3){width:112px}.odf-detail-workspace .odf-port-table th:last-child{width:0}.odf-detail-workspace .odf-fiber-title{height:30px;line-height:16px;padding:6px;font-weight:500}.odf-detail-workspace .odf-core,.odf-detail-workspace .odf-target{height:28px;min-height:28px;box-sizing:border-box;font-size:11px}.odf-detail-workspace .odf-target{background:#fafcfd}.odf-detail-workspace .odf-target:hover{background:#e8f2f8}.odf-detail-workspace .odf-port-table input,.odf-detail-workspace .odf-port-table select{border-color:#d5dfe5;background:#fff}.odf-detail-workspace .odf-port-table td:first-child{text-align:center;color:#486171}.odf-detail-workspace .odf-port-table th:first-child{text-align:center}

.odf-tube-index{display:inline-block;font-size:8px;line-height:10px;color:#718896;margin-right:4px;font-weight:400}.patch-port>b .odf-tube-index{font-size:7px}

.odf-port-table td:first-child .odf-tube-index{color:inherit;opacity:.85}.odf-target>span{font-weight:500}.odf-port-table tr:nth-child(12n+1):not(:first-child)>td{border-top-width:3px}.odf-target:nth-child(12n+2):not(:nth-child(2)){border-top-width:3px}

/* Side-view SC adapter with blue molded body, metal clip and colored pigtail. */
.odf-detail-workspace .odf-join-canvas{grid-template-columns:205px 190px;gap:90px;min-width:500px}.odf-detail-workspace .odf-target{gap:7px;padding:2px 8px;background:#f7fafc!important;border-right-width:1px!important;overflow:visible}.odf-target>span:not(.odf-adapter-3d){font-size:10px;white-space:nowrap}.odf-target>small{display:none}.odf-adapter-3d{position:relative;display:block;flex:0 0 69px;width:69px;height:20px;margin-right:5px;background:linear-gradient(180deg,#48a8e9 0 18%,#2289d3 19% 77%,#1266ac 78%);border:1px solid #176fae;border-radius:2px;box-shadow:0 2px 1px #243e4d25;box-sizing:border-box}.odf-adapter-3d:before{content:"";position:absolute;top:-2px;bottom:-2px;left:29px;width:5px;background:#1883cc;border:1px solid #176eac;border-radius:1px}.odf-adapter-3d:after{content:"";position:absolute;top:2px;left:9px;width:14px;height:2px;border-radius:2px;background:#244b68}.odf-adapter-face{position:absolute;left:-3px;top:-1px;width:9px;height:20px;background:#28323a;border:1px solid #15252e;border-radius:1px;box-shadow:inset 2px 0 0 #56636a}.odf-adapter-face:after{content:"";position:absolute;left:2px;top:5px;width:4px;height:8px;background:#101d25;border-radius:3px}.odf-adapter-clip{position:absolute;left:11px;bottom:1px;width:14px;height:7px;transform:skewY(-9deg);background:linear-gradient(#d5dce0,#8c9aa5 50%,#e5eaed);border:1px solid #788b98;border-radius:1px}.odf-pigtail-boot{position:absolute;right:-10px;top:5px;width:10px;height:8px;background:repeating-linear-gradient(90deg,#d4dce1 0 2px,#9faeb8 2px 3px);border-radius:0 4px 4px 0}.odf-pigtail-tail{position:absolute;right:-21px;top:8px;width:12px;height:3px;background:var(--pigtail-color);border-radius:1px}.odf-detail-workspace .odf-target>i{right:-4px;background:var(--pigtail-color);border-color:#698190}.odf-target:has(.odf-adapter-3d){padding-right:22px}.odf-detail-workspace .odf-target:hover{background:#e8f2f8!important}

.odf-adapter-3d{margin-right:20px;flex-basis:58px;width:58px}.odf-detail-workspace .odf-target{gap:5px}

/* Separate pigtail plug from the adapter so the keyed top edges remain visible. */
.odf-detail-workspace .odf-join-canvas{grid-template-columns:235px 190px;min-width:530px}.odf-adapter-3d{margin-right:53px}.odf-adapter-3d:after{top:-1px;left:12px;width:12px;height:4px;background:#173a54;border-radius:0 0 2px 2px;box-shadow:inset 0 -1px 0 #0d527f}.odf-pigtail-plug{position:absolute;display:block;right:-34px;top:2px;width:20px;height:14px;box-sizing:border-box;border:1px solid #176ca7;border-radius:2px;background:linear-gradient(#42a0e0 0 25%,#258bd3 26% 80%,#166caf 81%);box-shadow:0 1px 1px #263e4c25}.odf-pigtail-plug:before{content:"";position:absolute;left:-5px;top:3px;width:5px;height:6px;background:#d8dfe3;border:1px solid #9baab4;border-radius:2px 0 0 2px;box-sizing:border-box}.odf-pigtail-plug:after{content:"";position:absolute;left:6px;top:-1px;width:7px;height:3px;background:#173a54;border-radius:0 0 1px 1px}.odf-pigtail-plug .odf-pigtail-boot{right:-9px;top:3px;width:9px;height:6px}.odf-pigtail-plug .odf-pigtail-tail{right:-20px;top:5px;width:12px;height:2px}

/* Keep the lower adapter body clear of the exposed metal clip. */
.odf-connectivity .odf-adapter-clip{display:none}

/* Lower adapter follows the new straight-on light-blue sample. */
.odf-connectivity .odf-adapter-3d{height:20px;background:linear-gradient(180deg,#64bce9 0%,#45a8db 70%,#3794c9 100%);border:1px solid #388fbf;border-left:5px solid #303336;border-right:5px solid #303336;border-radius:1px;box-shadow:0 1px 2px #233d4d25}.odf-connectivity .odf-adapter-3d:before{left:21px;top:-4px;bottom:-4px;width:4px;background:#67bce5;border:1px solid #4aa1d0;border-radius:0;box-shadow:1px 0 0 #88ceee}.odf-connectivity .odf-adapter-3d:after{left:-1px;top:6px;width:15px;height:3px;background:#243c49;border-radius:0 3px 3px 0;box-shadow:35px 0 0 #243c49}.odf-connectivity .odf-adapter-face{display:none}.odf-connectivity .odf-adapter-clip{display:none}.odf-connectivity .odf-pigtail-plug{top:2px}

.odf-connectivity .odf-adapter-3d{border-right:1px solid #388fbf}.odf-connectivity .odf-adapter-clip{display:none!important}

.odf-connectivity .odf-adapter-3d:after{top:50%;transform:translateY(-50%)}

/* Pigtail connector seated inside the adapter, matching the assembled reference. */
.odf-connectivity .odf-pigtail-plug{right:-17px;top:1px;width:23px;height:16px;background:linear-gradient(180deg,#43a9db 0 20%,#2695ca 21% 80%,#187eae 81%);border:1px solid #267fa9;border-radius:1px;box-shadow:0 1px 1px #233d4d20}.odf-connectivity .odf-pigtail-plug:before{display:none}.odf-connectivity .odf-pigtail-plug:after{left:5px;top:-3px;width:12px;height:4px;box-sizing:border-box;border:1px solid #2788b7;border-radius:1px;background:#54b4df;box-shadow:inset 0 -1px 0 #2189b9}.odf-connectivity .odf-pigtail-plug .odf-pigtail-boot{right:-15px;top:3px;width:15px;height:8px;background:repeating-linear-gradient(90deg,#48a8d4 0 2px,#237fae 2px 3px);border-radius:0 4px 4px 0}.odf-connectivity .odf-pigtail-plug .odf-pigtail-tail{right:-28px;top:6px;width:14px;height:2px;background:var(--pigtail-color)}.odf-connectivity .odf-adapter-3d{margin-right:47px}

/* The seated plug covers the adapter slot on its insertion side. */
.odf-connectivity .odf-adapter-3d:after{box-shadow:none}.odf-connectivity .odf-pigtail-plug{right:-14px;width:26px;top:0;height:18px;z-index:2;border-left:0;border-radius:0 1px 1px 0;background:#3a9fce;box-shadow:none}.odf-connectivity .odf-adapter-3d{background:#3a9fce;border-right-color:#3a9fce}

/* Aligned side latch, centered at the same height as the opposite slot. */
.odf-connectivity .odf-pigtail-plug:after{display:block;left:1px;top:50%;width:13px;height:3px;transform:translateY(-50%);border:0;border-radius:3px 0 0 3px;background:#243c49;box-shadow:inset 0 1px 0 #153348}.odf-connectivity .odf-pigtail-plug{top:0;height:18px;background:#3a9fce;border-top-color:#388fbf;border-bottom-color:#388fbf}.odf-connectivity .odf-pigtail-plug .odf-pigtail-boot{top:4px}.odf-connectivity .odf-pigtail-plug .odf-pigtail-tail{top:7px}

.odf-detail-workspace .odf-join-canvas{grid-template-columns:215px 190px;gap:60px;justify-content:start;min-width:465px}.odf-connectivity .odf-adapter-3d{margin-right:41px}.odf-detail-workspace .odf-target{gap:3px;padding-left:5px;padding-right:8px}

/* Restore the original fiber position; tighten only the port-label spacing. */
.odf-detail-workspace .odf-join-canvas{grid-template-columns:235px 190px;gap:90px;justify-content:space-between;min-width:530px}.odf-connectivity .odf-adapter-3d{margin-right:35px}.odf-detail-workspace .odf-target{gap:2px;padding-left:8px;padding-right:22px}

/* Trim the port box itself, independently of the fiber column. */
.odf-detail-workspace .odf-target{width:210px;padding-left:8px;padding-right:8px}.odf-connectivity .odf-target .odf-adapter-3d{margin-right:0}.odf-connectivity .odf-target>span:not(.odf-adapter-3d){position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:10px;white-space:nowrap}

.odf-connectivity .odf-target>span:not(.odf-adapter-3d){left:120px;right:8px;text-align:center}

/* Short colored lead beyond the panel connection handle. */
.odf-detail-workspace .odf-target>i:after{content:"";position:absolute;left:5px;top:2px;width:7px;height:2px;background:var(--pigtail-color);border-radius:1px;pointer-events:none}

.odf-detail-workspace .odf-target>i:after{width:13px}

.odf-detail-workspace .odf-target>i:after{width:19px}

/* Place the connection handle at the outer end of the colored lead. */
.odf-detail-workspace .odf-target>i{right:-23px}.odf-detail-workspace .odf-target>i:after{left:-19px;top:2px;width:19px}

/* Fiber table follows the Join Box arrangement, without the Comment column. */
.odf-fiber-identity{display:grid;grid-template-columns:65px 1fr;border:1px solid #536874;background:#f0f4f6;min-height:30px;box-sizing:border-box;font-size:10px}.odf-fiber-identity>span{padding:7px 5px;overflow-wrap:anywhere}.odf-fiber-identity>span+span{border-left:1px solid #536874}.odf-fiber-head{display:grid;grid-template-columns:32px 1fr 44px;height:28px;background:#e5ebef;border:1px solid #536874;border-top:0;box-sizing:border-box;font-size:10px;text-align:center;align-items:stretch}.odf-fiber-head>span{padding:6px 2px}.odf-fiber-head>span+span{border-left:1px solid #536874}.odf-tube-group{display:grid;grid-template-columns:minmax(0,1fr) 44px;border-right:1px solid #536874;border-bottom:1px solid #536874}.odf-tube-group+.odf-tube-group{margin-top:10px;border-top:1px solid #536874}.odf-tube-band{display:flex;align-items:center;justify-content:center;border-left:1px solid #536874;font-size:11px;font-weight:500}.odf-tube-band>span{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap}.odf-detail-workspace .odf-core{display:grid;grid-template-columns:32px minmax(0,1fr);gap:0;padding:0;background:#fff;color:#304a59;text-shadow:none;border:0;border-left:1px solid #536874;border-bottom:1px solid #536874;height:28px;min-height:28px;overflow:visible}.odf-core-stack>.odf-core:last-child{border-bottom:0}.odf-detail-workspace .odf-core .odf-core-number{display:flex;align-items:center;justify-content:center;align-self:stretch;min-width:0;background:#fff;color:#304a59;border-right:1px solid #536874}.odf-detail-workspace .odf-core .odf-core-name{display:flex;align-items:center;justify-content:center;align-self:stretch;background:var(--core-color);color:var(--core-text);font-size:11px}.odf-detail-workspace .odf-core>i{left:-5px;right:auto;background:var(--core-color)}.odf-detail-workspace .odf-core.chosen{outline:2px solid #193b52;outline-offset:0;z-index:1}

/* Matching outward fiber tips on the connection-facing side. */
.odf-detail-workspace .odf-core>i{left:-23px;right:auto;width:7px;height:7px;box-sizing:content-box;background:var(--core-color);border:1px solid #698190;border-radius:50%}.odf-detail-workspace .odf-core>i:after{content:"";position:absolute;left:6px;top:2px;width:19px;height:2px;background:var(--core-color);border-radius:1px;pointer-events:none}

/* Connected ends become continuous leads without circular handles. */
.odf-detail-workspace .odf-core.odf-connected>i,.odf-detail-workspace .odf-target.odf-connected>i{background:transparent;border-color:transparent}.odf-detail-workspace .odf-core.odf-connected>i:after{left:3px;width:22px}.odf-detail-workspace .odf-target.odf-connected>i:after{width:22px}

/* Match the two-row fiber header and center every lead geometrically. */
.odf-detail-workspace .odf-join-targets>.odf-fiber-title{height:58px;display:flex;align-items:center}.odf-detail-workspace .odf-port-table th{height:58px}.odf-detail-workspace .odf-core>i,.odf-detail-workspace .odf-target>i{top:50%;transform:translateY(-50%)}.odf-detail-workspace .odf-core>i:after,.odf-detail-workspace .odf-target>i:after{top:50%;transform:translateY(-50%)}.odf-join-wire{stroke-linecap:round;stroke-linejoin:round}

/* One continuous SVG stroke replaces both separate leads once connected. */
.odf-detail-workspace .odf-core.odf-connected>i,.odf-detail-workspace .odf-target.odf-connected>i{visibility:hidden}.odf-join-wire{stroke-width:2;stroke-linecap:butt;stroke-linejoin:round}

/* A single table-like frame groups the panel ports and fiber diagram. */
.odf-detail-workspace .odf-join-canvas{border:1px solid #aebfc9;background:#fff;box-sizing:border-box;padding:0;isolation:isolate}.odf-detail-workspace .odf-join-canvas:before{content:"";position:absolute;left:0;right:0;top:0;height:58px;box-sizing:border-box;background:#edf2f5;border-bottom:1px solid #aebfc9;z-index:-1;pointer-events:none}.odf-detail-workspace .odf-join-targets>.odf-fiber-title{background:transparent;border:0;border-bottom:1px solid #aebfc9;padding-left:10px}.odf-detail-workspace .odf-fiber-identity{background:transparent;border:0;border-bottom:1px solid #aebfc9}.odf-detail-workspace .odf-fiber-head{background:transparent;border:0;border-bottom:1px solid #aebfc9}.odf-detail-workspace .odf-fiber-card{margin-bottom:24px}.odf-detail-workspace .odf-fiber-card:last-child{margin-bottom:0}.odf-detail-workspace .odf-join-lines{z-index:1}.odf-detail-workspace .odf-join-targets,.odf-detail-workspace .odf-join-fibers{position:relative;z-index:2;pointer-events:none}.odf-detail-workspace .odf-target,.odf-detail-workspace .odf-core{pointer-events:auto}

/* Restore the visible box around the core-count and Fiber ID header cells. */
.odf-detail-workspace .odf-fiber-identity{border:1px solid #617480;box-sizing:border-box}.odf-detail-workspace .odf-fiber-identity>span+span{border-left:1px solid #617480}.odf-detail-workspace .odf-fiber-head{border:1px solid #617480;border-top:0;box-sizing:border-box}

.odf-detail-workspace .odf-join-targets>.odf-fiber-title{border:1px solid #617480;box-sizing:border-box}

/* Align panel heading edges with the port rows below it. */
.odf-detail-workspace .odf-join-targets>.odf-fiber-title{width:210px;max-width:100%}

/* Consistent type size across the lower port and fiber numbering. */
.odf-detail-workspace .odf-tube-index,.odf-detail-workspace .odf-port-table td:first-child,.odf-detail-workspace .odf-target>span:not(.odf-adapter-3d),.odf-detail-workspace .odf-core-number,.odf-detail-workspace .odf-core-name,.odf-detail-workspace .odf-tube-band{font-size:11px;line-height:14px;font-weight:400}.odf-detail-workspace .odf-tube-index{margin-right:4px}.odf-detail-workspace .odf-port-table th:first-child{width:60px}

.odf-detail-workspace .odf-port-table td:first-child .odf-tube-index{margin-right:0}

.patch-designer .patch-ports .patch-port>b{font-size:11px;line-height:14px;letter-spacing:0;white-space:nowrap;font-variant-numeric:tabular-nums}

.odf-detail-workspace .odf-fiber-identity,.odf-detail-workspace .odf-fiber-head,.odf-detail-workspace .odf-core-number,.odf-detail-workspace .odf-core-name,.odf-detail-workspace .odf-tube-band,.odf-detail-workspace .odf-tube-index,.odf-detail-workspace .odf-port-table td:first-child,.odf-detail-workspace .odf-target>span:not(.odf-adapter-3d){font-weight:600}

/* Right-align the patch panel capacity and connection summary. */
.patch-designer .odf-summary{text-align:right}

/* Wider full-height rack ears with crisp slotted mounting holes. */
.patch-designer .patch-ports{margin-left:28px;margin-right:28px}.patch-designer .patch-ports:before,.patch-designer .patch-ports:after{width:29px;top:-1px;bottom:-1px;background:radial-gradient(ellipse 4px 7px at 50% 13px,#31424e 0 70%,#96a7b3 73% 83%,transparent 88%),radial-gradient(ellipse 4px 7px at 50% calc(100% - 13px),#31424e 0 70%,#96a7b3 73% 83%,transparent 88%),#c6d0d7;border-radius:2px;box-shadow:inset 0 1px 0 #edf2f5,0 1px 2px #243e4d20}.patch-designer .patch-ports:before{left:-28px;border-right:3px solid #93a3ae}.patch-designer .patch-ports:after{right:-28px;border-left:3px solid #93a3ae}

.patch-designer .patch-ports{margin-left:34px;margin-right:34px}.patch-designer .patch-ports:before,.patch-designer .patch-ports:after{width:35px;background:radial-gradient(circle 5px at 50% 13px,#3a4b57 0 72%,#a5b3bd 75% 86%,transparent 90%),radial-gradient(circle 5px at 50% calc(100% - 13px),#3a4b57 0 72%,#a5b3bd 75% 86%,transparent 90%),#d4dce2}.patch-designer .patch-ports:before{left:-34px}.patch-designer .patch-ports:after{right:-34px}

.patch-designer .patch-ports:before,.patch-designer .patch-ports:after{background:radial-gradient(circle 5px at 50% 20px,#3a4b57 0 72%,#a5b3bd 75% 86%,transparent 90%),radial-gradient(circle 5px at 50% calc(100% - 20px),#3a4b57 0 72%,#a5b3bd 75% 86%,transparent 90%),#d4dce2}

.patch-designer .patch-ports:before,.patch-designer .patch-ports:after{background:radial-gradient(circle 7px at 50% 20px,#3a4b57 0 72%,#a5b3bd 75% 86%,transparent 90%),radial-gradient(circle 7px at 50% calc(100% - 20px),#3a4b57 0 72%,#a5b3bd 75% 86%,transparent 90%),#d4dce2}

.patch-designer .patch-ports:before,.patch-designer .patch-ports:after{background:radial-gradient(circle 9px at 50% 20px,#3a4b57 0 72%,#a5b3bd 75% 86%,transparent 90%),radial-gradient(circle 9px at 50% calc(100% - 20px),#3a4b57 0 72%,#a5b3bd 75% 86%,transparent 90%),#d4dce2}

.patch-designer .patch-ports{margin-left:40px;margin-right:40px}.patch-designer .patch-ports:before,.patch-designer .patch-ports:after{width:41px}.patch-designer .patch-ports:before{left:-40px}.patch-designer .patch-ports:after{right:-40px}

.patch-designer .odf-capacity-control{margin:18px 0 0;padding:10px 0;border-top:1px solid #d4dfe6;gap:14px;align-items:center}.patch-designer .odf-capacity-control .odf-capacity{min-width:120px}

.patch-designer .odf-capacity-control{margin:20px 0 0;padding:0;border-top:0;gap:14px;align-items:center}

/* Keep capacity selection close above the panel faceplate. */
.patch-designer .odf-capacity-control{margin-top:12px;margin-bottom:0}.patch-designer .odf-summary{margin-top:2px;padding:3px 0;border-bottom:0;line-height:15px}.patch-designer .patch-ports{margin-top:5px}

.patch-designer .odf-capacity-control{margin-top:8px}.patch-designer .odf-summary{margin-top:0;padding:0;line-height:14px}.patch-designer .patch-ports{margin-top:1px}

.patch-designer .odf-header-name{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:8px 0 0;font-size:10px;color:#718390}.patch-designer .odf-header-name .odf-name{width:440px;max-width:75vw;font-size:18px;font-weight:600;line-height:24px;padding:4px 0;border:0;border-bottom:1px solid #c4d3dd;border-radius:0;background:transparent;color:#2e495a}.patch-designer .odf-header-name .odf-name:focus{outline:none;border-bottom-color:#5287a4}.odf-accessible-title{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.odf-header-name .odf-print-value{font-size:18px!important;font-weight:600;line-height:24px}

/* Reduce only the space above the patch panel menu. */
.patch-designer .ops-heading{margin-bottom:4px;padding-bottom:6px}.patch-designer .patch-top-actions{padding-top:5px}.patch-designer .odf-header-name{margin-top:5px}

/* Enclose both lower panes in one complete frame. */
.odf-detail-workspace{border:1px solid #adbeca;align-items:stretch;box-sizing:border-box}.odf-detail-workspace>.odf-bulk-form{padding-left:12px;padding-bottom:12px}.odf-detail-workspace>.odf-connectivity{padding-right:12px;padding-bottom:12px;border-left:1px solid #adbeca}

/* Match Join Box tips: plain lead normally, circular handle on hover. */
.odf-detail-workspace .odf-core:not(.odf-connected)>i{background:transparent;border-color:transparent;cursor:crosshair}.odf-detail-workspace .odf-core:not(.odf-connected):hover>i,.odf-detail-workspace .odf-core:not(.odf-connected):focus-visible>i,.odf-detail-workspace .odf-core.chosen:not(.odf-connected)>i{background:#fff;border-color:var(--core-color);box-shadow:0 0 0 1px #54708330}.odf-detail-workspace .odf-core>i:before{content:"";position:absolute;inset:-7px;cursor:crosshair}.odf-detail-workspace .odf-core:hover{outline:1px solid #547083;outline-offset:-1px;z-index:1}.odf-detail-workspace .odf-core:focus-visible{outline:2px solid #2c91ce;outline-offset:-2px}

.odf-detail-workspace .odf-core>i{left:-31px;width:9px;height:9px}.odf-detail-workspace .odf-core>i:after{left:8px;width:27px}.odf-detail-workspace .odf-core>i:before{inset:-8px}

.odf-detail-workspace .odf-core>i{left:-39px;width:11px;height:11px}.odf-detail-workspace .odf-core>i:after{left:10px;width:35px}

/* Keep the extended lead outside the fiber cell, ending exactly at its border. */
.odf-detail-workspace .odf-core>i:after{left:50%;width:32.5px}

/* Wide invisible hit area keeps fine connection lines easy to select. */
.odf-join-hit{fill:none;stroke:transparent;stroke-width:16;pointer-events:stroke;cursor:pointer;stroke-linecap:round}.odf-join-link .odf-join-wire{pointer-events:none}.odf-join-link:hover .odf-join-wire,.odf-join-link.selected-link .odf-join-wire{stroke-width:3}.odf-join-lines:has(.odf-join-link:hover) .odf-join-link:not(:hover){opacity:.18}.odf-join-lines:has(.odf-join-link:hover) .odf-join-wire{opacity:1}

.patch-designer .odf-link-menu{position:fixed;z-index:1000;min-width:155px}

/* Panel tips mirror the fiber lead length, handle size and hover behavior. */
.odf-detail-workspace .odf-target>i{right:-39px;left:auto;width:11px;height:11px;box-sizing:content-box;background:transparent;border-color:transparent;cursor:crosshair}.odf-detail-workspace .odf-target>i:after{left:auto;right:50%;width:32.5px;top:50%;transform:translateY(-50%);background:var(--pigtail-color)}.odf-detail-workspace .odf-target>i:before{content:"";position:absolute;inset:-8px;cursor:crosshair}.odf-detail-workspace .odf-target:not(.odf-connected):hover>i,.odf-detail-workspace .odf-target:not(.odf-connected):focus-visible>i{background:#fff;border-color:var(--pigtail-color);box-shadow:0 0 0 1px #54708330}.odf-detail-workspace .odf-target:focus-visible{outline:2px solid #2c91ce;outline-offset:-2px}.odf-detail-workspace .odf-target.odf-connected>i{visibility:hidden}

.odf-image-snapshot .odf-print-value{display:block;min-height:16px;line-height:16px;font-size:11px;white-space:pre-wrap;overflow-wrap:anywhere}.odf-image-snapshot .odf-header-name .odf-print-value{font-size:18px;font-weight:600}.odf-image-snapshot .odf-join-link{opacity:1!important}.odf-image-snapshot .odf-join-wire{stroke-width:2!important}

/* Keep one outer workspace frame; remove the nested diagram outline. */
.odf-detail-workspace .odf-join-canvas{border:0;box-shadow:none}

/* Cable identity runs vertically outside the tube column. */
.odf-fiber-card{position:relative}.odf-detail-workspace .odf-tube-group{margin-right:24px}.odf-detail-workspace .odf-fiber-head{padding-right:24px}.odf-fiber-name{position:absolute;right:0;top:58px;bottom:0;width:24px;box-sizing:border-box;border:1px solid #617480;background:#edf2f5;color:#405c6d;display:flex;align-items:center;justify-content:center;overflow:hidden;font-size:11px;font-weight:600}.odf-fiber-name>span{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-height:100%;padding:6px 0}

.odf-fiber-name{font-size:13px;font-weight:700}

.odf-fiber-name{width:34px}.odf-detail-workspace .odf-tube-group{margin-right:34px}.odf-detail-workspace .odf-fiber-head{padding-right:34px}

.join-box-dialog .joinbox-link-menu{position:fixed;z-index:1000;min-width:155px}

/* Existing link hit targets must not intercept a core-to-core drop. */
.joinbox-connecting .join-connection-hit,.joinbox-connecting .splitter-link-hit{pointer-events:none!important}

.patch-designer .patch-top-actions .odf-delete:disabled{opacity:.4;cursor:not-allowed;background:#f2f4f6;border-color:#d4dce2;color:#82919c;box-shadow:none}.patch-designer .patch-top-actions .odf-delete:not(:disabled){opacity:1;cursor:pointer;color:#b34d4d;background:#fff8f8;border-color:#e7cccc}

/* Continuous table boundaries across the panel/fiber header and footer. */
.odf-detail-workspace .odf-join-canvas:before{top:0;height:58px;border-top:1px solid #617480;border-bottom:1px solid #617480;background:#edf2f5;box-sizing:border-box}.odf-detail-workspace .odf-join-canvas:after{content:"";position:absolute;left:0;right:0;bottom:0;border-bottom:1px solid #617480;pointer-events:none}.odf-detail-workspace .odf-join-targets>.odf-fiber-title,.odf-detail-workspace .odf-fiber-identity,.odf-detail-workspace .odf-fiber-head{border-color:#617480}.odf-detail-workspace .odf-fiber-identity>span+span,.odf-detail-workspace .odf-fiber-head>span+span{border-left-color:#617480}

/* Match the information table to the connection header boundaries. */
.odf-detail-workspace .odf-port-table{border:1px solid #617480;border-collapse:collapse}.odf-detail-workspace .odf-port-table th,.odf-detail-workspace .odf-port-table td{border:1px solid #617480}.odf-detail-workspace .odf-port-table th{background:#edf2f5;border-top:1px solid #617480;border-bottom:1px solid #617480}.odf-detail-workspace .odf-port-table tr:nth-child(12n+1):not(:first-child)>td{border-top-width:1px}.odf-detail-workspace .odf-port-table tbody tr:last-child>td{border-bottom:1px solid #617480}

.fiber-roll-dialog{width:min(400px,92vw);border:1px solid #bcced8;border-radius:8px;padding:20px;color:#334e60}.fiber-roll-dialog label{display:flex;flex-direction:column;gap:6px;margin:12px 0;font-size:12px}.fiber-roll-dialog input,.fiber-roll-dialog textarea{padding:8px;border:1px solid #c5d3dc;border-radius:4px;font:inherit}.fiber-roll-dialog textarea{min-height:65px}.roll-actions{display:flex;gap:8px}.roll-actions button{width:auto;padding:7px 14px}.roll-error{color:#b34d4d}.fiber-roll-icon{color:#276a8b;background:#fff;border:1px solid #b4cbd8;border-radius:50%;box-shadow:0 1px 3px #25465a22}.fiber-roll-icon svg{width:30px;height:26px;display:block}

/* Fiber roll shows only its coil, with the map visible through it. */
.fiber-roll-icon{background:transparent;border:0;box-shadow:none;border-radius:0}

.fiber-roll-icon svg{width:30px;height:36px;display:block}

.fiber-roll-icon svg{width:24px;height:24px;overflow:visible}

.fiber-roll-icon svg{width:18px;height:18px;shape-rendering:geometricPrecision}

.fiber-roll-around-device svg{width:24px;height:24px}

/* Scale map artwork and anchors together at wider map views. */
.map-icon-art{position:absolute;left:0;top:0;display:block;transform-origin:0 0;pointer-events:inherit}.join-box-map-icon svg{filter:none}

/* Coil artwork uses map vector coordinates; this marker retains its click target. */
.fiber-roll-vector-hit svg{opacity:0}
/* Open the patch panel at the full workspace size, like the Join Box. */
dialog.patch-designer{position:fixed;inset:0;margin:0;width:100vw;max-width:100vw;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;box-sizing:border-box;padding:20px 25px;border:0;border-radius:0;overflow:auto;overscroll-behavior:contain;background:#fff;box-shadow:none}dialog.patch-designer[open]{display:block}dialog.patch-designer>.ops-heading{position:relative;flex-shrink:0}@media(max-width:650px){dialog.patch-designer{padding:14px 12px}}

#dialog #fields textarea[name="notes"]{height:33px;min-height:33px;max-height:none;padding:7px 9px;line-height:17px;box-sizing:border-box;resize:vertical;overflow:auto}

#dialog.compact-route-form #fields input[name="name"],#dialog.compact-route-form #fields input[name="fiberId"]{height:30px;min-height:30px;padding:5px 9px;line-height:18px;box-sizing:border-box;font-size:12px}
/* Circular fiber color swatches without changing their values or selection behavior. */
.route-color-boxes button>span{width:16px;height:16px;min-width:16px;flex:0 0 16px;border-radius:50%;box-sizing:border-box}.route-color-preview>.route-preview-swatch{width:34px;height:34px;border-radius:50%;box-sizing:border-box}.color-presets button{border-radius:50%}
/* Compact, circular twelve-core palette. */
.route-color-control{padding:13px;border:1px solid #e1e8ed;border-radius:10px;background:#f8fafc}.route-palette-title{font-size:11px;font-weight:650;color:#547184;margin-bottom:11px}.route-color-preview{display:flex;align-items:center;gap:10px;padding:10px 11px;background:#fff;border:1px solid #e3eaef;border-radius:8px;flex-wrap:wrap}.route-color-preview>.route-preview-swatch{width:28px;height:28px;flex:0 0 28px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1px #d8e3e8}.route-color-preview small{font-size:8px;color:#91a3af;letter-spacing:.2px}.route-color-name{font-size:12px;font-weight:600;color:#456779;margin-top:2px}.route-color-control .route-hex-label{margin-left:auto;font-size:8px;letter-spacing:.6px;color:#9aabb6}.route-color-control .route-color-hex{width:80px;font-size:10px;height:27px;padding:5px 7px;margin-top:3px;border:1px solid #e0e8ed;border-radius:5px;background:#fafcfd;color:#6f8797}.route-color-control .route-custom-color{margin:0;gap:7px;font-size:9px;color:#8a9da9}.route-color-control .route-custom-color input{width:27px;height:27px;padding:3px;border:1px solid #dce6eb;border-radius:5px;background:#fff}.route-color-boxes{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin-top:12px}.route-color-boxes button{display:flex;flex-direction:column;justify-content:center;gap:7px;padding:10px 2px 8px;background:transparent;border:1px solid transparent;border-radius:8px;min-width:0;transition:background .12s,border-color .12s}.route-color-boxes button>span{display:block;width:26px;height:26px;min-width:26px;flex:0 0 26px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1px #dce5eb;transition:box-shadow .12s}.route-color-boxes button small{font-size:9px;white-space:nowrap;line-height:1.2;color:#879aa8;letter-spacing:-.1px}.route-color-boxes button:hover{background:#edf3f6;border-color:#e0e8ee}.route-color-boxes button[aria-pressed=true]{padding:10px 2px 8px;border:1px solid #cde3e2;background:#e7f2f0}.route-color-boxes button[aria-pressed=true]>span{box-shadow:0 0 0 2px #508f91}.route-color-boxes button[aria-pressed=true] small{font-weight:650;color:#438181}.route-color-boxes button[aria-pressed=true] b{display:none}.route-color-boxes button:focus-visible{outline:2px solid #508f91;outline-offset:1px}@media(max-width:420px){.route-color-boxes{grid-template-columns:repeat(4,minmax(0,1fr))}.route-color-control .route-custom-color{width:100%;justify-content:flex-end}.route-color-preview{gap:9px}}
/* Alternative palette: compact labeled pills in core order. */
.route-color-control{padding:13px;background:#fff;border:1px solid #dee7ed;border-radius:12px}.route-palette-title{font-size:11px;color:#58758a;margin-bottom:10px}.route-color-preview{background:#f3f7fa;border:0;border-radius:8px;padding:9px 10px}.route-color-boxes{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:13px}.route-color-boxes button,.route-color-boxes button[aria-pressed=true]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:8px;padding:8px 10px;border:1px solid #e3eaf0;border-radius:24px;background:#fafcfd;min-height:36px}.route-color-boxes button>span{width:19px;height:19px;min-width:19px;flex:0 0 19px;border:2px solid #fff;box-shadow:0 0 0 1px #e0e7ec}.route-color-boxes button small{font-size:10px;color:#718a9c;text-align:left;letter-spacing:0}.route-color-boxes button:hover{background:#f0f6f8;border-color:#bed6df}.route-color-boxes button[aria-pressed=true]{background:#eaf5f2;border-color:#79b2aa;box-shadow:0 0 0 1px #79b2aa20}.route-color-boxes button[aria-pressed=true]>span{box-shadow:0 0 0 1px #75aaa2}.route-color-boxes button[aria-pressed=true] small{color:#387b74;font-weight:650}.route-color-boxes button[aria-pressed=true] b{display:none}@media(max-width:380px){.route-color-boxes{grid-template-columns:repeat(2,minmax(0,1fr))}}

.route-color-boxes button>span{width:20px;height:20px;min-width:20px;flex:0 0 20px;border:1px solid #0002;box-shadow:none;background:var(--swatch);opacity:1;filter:none}.route-color-boxes button,.route-color-boxes button:hover{background:#fff}.route-color-boxes button small{color:#526f82}.route-color-boxes button[aria-pressed=true]{background:#edf7f3}.route-color-boxes button[aria-pressed=true]>span{box-shadow:0 0 0 2px #fff,0 0 0 3px #75aaa2}
.map-type-picker{left:auto;bottom:auto;right:14px;top:14px}.map-type-trigger{width:64px;height:64px;border:1px solid #fff;border-radius:9px;box-shadow:0 2px 9px #18374730}.map-type-trigger>.map-type-preview{border-radius:7px}.map-type-trigger b{font-size:11px;left:5px;right:3px;bottom:6px;gap:3px}.map-type-trigger b svg{width:15px;height:15px}.map-type-choices{left:auto;right:0;top:74px;bottom:auto}@media(max-width:480px){.map-type-picker{left:auto;right:10px;top:10px;bottom:auto}.map-type-trigger{width:58px;height:58px}.map-type-trigger b{font-size:10px;left:4px;bottom:5px}.map-type-choices{left:auto;right:0;top:68px;bottom:auto}}
.map-tools .map-type-picker{position:relative;inset:auto;left:auto;right:auto;top:auto;bottom:auto;width:44px;z-index:1}.map-tools .map-type-trigger{width:44px;height:46px;min-height:46px;display:flex;align-items:center;justify-content:center;padding:4px;border:0;border-radius:6px;box-shadow:none;background:transparent;overflow:visible}.map-tools .map-type-trigger>.map-type-preview,.map-tools .map-type-trigger:after{display:none}.map-tools .map-type-trigger b{position:static;inset:auto;display:flex;flex-direction:column;align-items:center;gap:4px;background:transparent;padding:0;font-size:9px;font-weight:600;color:#637384;text-shadow:none;line-height:1.2}.map-tools .map-type-trigger b svg{width:21px;height:21px}.map-tools .map-type-trigger:hover,.map-tools .map-type-trigger[aria-expanded=true]{background:#edf3f5}.map-tools .map-type-choices{position:absolute;left:54px;right:auto;top:0;bottom:auto;width:220px;box-sizing:content-box}.map-tools .map-type-cards button{display:grid;grid-template-columns:1fr;width:98px;height:auto;min-height:0;padding:4px;border:2px solid transparent;border-radius:9px;background:white;gap:7px;box-shadow:none;font-size:12px}.map-tools .map-type-cards button[aria-pressed=true]{border-color:#168d83;color:#106d65;background:#eff9f7;box-shadow:none}.map-tools .map-type-cards .map-type-preview{width:100%;height:58px}.map-tools .map-type-choices>strong{font-size:13px}@media(max-width:480px){.map-tools .map-type-choices{width:205px;left:52px;top:-40px}.map-tools .map-type-cards button{width:90px}}

.free-end-handle>span{opacity:0;width:8px;height:8px;border:1.5px solid #438c91;background:#fff;box-shadow:0 0 0 3px #ffffffb3;transition:opacity .1s}.free-end-handle:hover>span,.free-end-handle:focus-visible>span,.free-end-handle:active>span{opacity:1}
#detail.fiber-inspector{padding:18px;width:330px;overflow:auto;border:1px solid #dce7ed;border-radius:12px;background:#fff;box-shadow:0 10px 35px #193d521c}#detail.fiber-inspector .inspector-head{padding:0 0 12px;margin:0 0 16px;top:-18px;min-height:29px;display:flex;justify-content:space-between;gap:12px;align-items:center;background:#fff}#detail .fiber-inspector-kicker{font-size:9px;font-weight:700;letter-spacing:1.5px;color:#8b9eaa}#detail.fiber-inspector h2{margin:0;font-size:20px;line-height:1.35;letter-spacing:-.3px;color:#2a4b5d;overflow-wrap:anywhere}#detail .fiber-inspector-id{font-size:11px;color:#8b9eaa;margin-top:5px;overflow-wrap:anywhere}#detail .fiber-inspector-badges{display:flex;gap:6px;flex-wrap:wrap;margin:13px 0 16px}#detail .fiber-inspector-badges span{font-size:9px;color:#628a94;background:#eff6f5;padding:5px 8px;border-radius:5px}#detail .fiber-inspector-badges span+span{background:#f0f4f8;color:#7a8fa1}#detail .fiber-inspector-actions{display:flex;gap:8px;padding-bottom:18px;border-bottom:1px solid #eaf0f4}#detail .fiber-inspector-actions button{flex:1;padding:8px 5px;border:1px solid #dce7ec;border-radius:6px;background:#f6f9fb;color:#577b8d;font-size:11px}#detail .fiber-inspector-actions #edit{background:#eaf5f3;color:#327e7b;border-color:#d6e8e4}#detail .fiber-inspector-actions #delete{background:#fff5f4;color:#b97474;border-color:#f0dddd}#detail .fiber-inspector-actions button:disabled{opacity:.4;cursor:default}#detail .fiber-inspector-metrics{display:grid;grid-template-columns:1.4fr 1fr;gap:12px;padding:20px 0 9px}#detail .fiber-inspector-metrics>div{display:grid;gap:7px}#detail .fiber-inspector-metrics>div+div{border-left:1px solid #eaf0f4;padding-left:18px}#detail .fiber-inspector-metrics small{font-size:10px;color:#94a5b0}#detail .fiber-inspector-metrics strong{font-size:23px;font-weight:600;line-height:1.2;color:#356579;letter-spacing:-.5px}#detail .fiber-length-breakdown{font-size:9px;color:#9aaeb9;margin:5px 0 17px}#detail .fiber-length-breakdown span{padding:0 5px;color:#c0cdd5}#detail .fiber-core-summary{margin:15px 0 19px;padding:15px 0;border-top:1px solid #edf2f5;border-bottom:1px solid #edf2f5}#detail .fiber-section-heading{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}#detail .fiber-section-heading strong{font-size:11px;font-weight:600;color:#658596}#detail .fiber-section-heading span{font-size:9px;color:#9aadba}#detail.fiber-inspector .strands{grid-template-columns:repeat(12,minmax(0,1fr));gap:4px;margin:0;max-height:180px;overflow:auto;padding:2px}#detail.fiber-inspector .strand{border-radius:4px;font-size:8px;height:20px;line-height:18px;border:1px solid #0001}#detail.fiber-inspector .strand.used{box-shadow:inset 0 0 0 1.5px #fff,0 0 0 1px #4d7184}#detail .fiber-inspector-section{border-bottom:1px solid #edf2f5;padding:0;margin:0}#detail .fiber-inspector-section>summary{cursor:pointer;list-style:none;font-size:11px;font-weight:500;color:#718b9c;display:flex;align-items:center;gap:8px;padding:12px 0}#detail .fiber-inspector-section>summary::-webkit-details-marker{display:none}#detail .fiber-inspector-section>summary:after{content:'›';margin-left:auto;color:#9bb0bc;font-size:16px;transition:transform .15s}#detail .fiber-inspector-section[open]>summary:after{transform:rotate(90deg)}#detail .fiber-inspector-section>summary span{font-size:9px;background:#edf3f7;padding:2px 6px;border-radius:10px}#detail .fiber-inspector-section>summary i{display:block;width:13px;height:13px;border-radius:50%;border:1px solid #0002}#detail .fiber-connection-scroll{max-height:200px;overflow:auto}#detail.fiber-inspector table{font-size:9px;table-layout:auto;width:100%;margin-bottom:12px}#detail.fiber-inspector th{font-size:8px;color:#90a3af;font-weight:600;background:#f6f9fb}#detail.fiber-inspector td,#detail.fiber-inspector th{padding:7px 5px;overflow-wrap:anywhere}#detail .fiber-inspector-notes{padding:3px 0 14px;border-bottom:1px solid #edf2f5}#detail .fiber-inspector-notes strong{font-size:10px;color:#829aa9;font-weight:600}#detail .fiber-inspector-notes p{font-size:11px;color:#7893a3;line-height:1.6;white-space:pre-wrap;margin:7px 0 0;overflow-wrap:anywhere}#detail .fiber-extra-tools{display:grid;gap:7px;padding-bottom:13px}#detail .fiber-extra-tools button{padding:8px 10px;border:1px solid #dfe8ed;background:#f7fafc;border-radius:6px;text-align:left;font-size:10px;color:#7892a2}#detail.fiber-inspector .cable-color-editor{margin-bottom:13px}#detail.fiber-inspector .inspector-color{font-size:11px}.workspace-readonly #detail.fiber-inspector .fiber-inspector-actions #edit,.workspace-readonly #detail.fiber-inspector .fiber-inspector-actions #delete,.workspace-readonly #detail.fiber-inspector .fiber-inspector-actions #featureUndo,.workspace-readonly #detail.fiber-inspector .fiber-extra-tools #reshape{display:none}@media(max-width:650px){#detail.fiber-inspector{width:min(330px,calc(100% - 85px));padding:16px}}
/* Align and compact the cable inspector against the supplied screenshot. */
#detail.fiber-inspector{box-sizing:border-box;padding:18px;scrollbar-width:thin;scrollbar-color:#c5d4de transparent}#detail.fiber-inspector .inspector-head{top:-18px;padding:0 0 10px;margin-bottom:13px;align-items:center;min-height:29px}#detail.fiber-inspector .inspector-head #closeInspector{align-self:center!important;margin-left:auto!important}#detail .fiber-inspector-kicker{color:#708a9a;font-size:9px}#detail.fiber-inspector h2{font-size:20px;line-height:1.3}#detail .fiber-inspector-id{margin-top:5px;font-size:11px;color:#708b9b}#detail .fiber-inspector-badges{margin:11px 0 13px;gap:7px}#detail .fiber-inspector-badges span{font-size:10px;padding:5px 8px;color:#4d7987}#detail .fiber-inspector-badges span+span{color:#687f91}#detail .fiber-inspector-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:8px;padding-bottom:13px}#detail .fiber-inspector-actions button{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-width:0;height:34px;margin:0;padding:7px 8px;line-height:18px;font-size:12px;font-weight:500;border-radius:7px}#detail .fiber-inspector-actions #edit{color:#2d7778}#detail .fiber-inspector-actions #delete{color:#aa5a60}#detail .fiber-inspector-actions button:disabled{opacity:1;background:#f6f8fa;color:#a0adb7;border-color:#e4eaee}#detail .fiber-inspector-metrics{padding:15px 0 9px;gap:13px;align-items:center}#detail .fiber-inspector-metrics>div{gap:6px}#detail .fiber-inspector-metrics small{font-size:11px;color:#7992a2}#detail .fiber-inspector-metrics strong{font-size:24px;line-height:1.2}#detail .fiber-length-breakdown{font-size:10px;color:#8b9fac;margin:2px 0 10px}#detail .fiber-core-summary{margin:10px 0 4px;padding:13px 0 15px}#detail .fiber-section-heading{gap:5px;margin-bottom:12px}#detail .fiber-section-heading strong{font-size:12px;color:#5b7c8f}#detail .fiber-section-heading span{font-size:10px;color:#8098a7}#detail.fiber-inspector .strands{gap:3px;padding:2px 1px;grid-template-columns:repeat(12,minmax(0,1fr))}#detail.fiber-inspector .strand{height:21px;line-height:19px;font-size:8px;font-weight:600;text-shadow:none;box-sizing:border-box}#detail .fiber-inspector-section>summary{min-height:39px;box-sizing:border-box;padding:10px 0;font-size:11px;color:#597a8e;line-height:18px}#detail .fiber-inspector-section>summary span{font-size:10px;color:#6e8899}#detail .fiber-inspector-section>summary:after{font-size:17px;color:#7e99aa}#detail .fiber-inspector-notes{padding:10px 0}#detail .fiber-inspector-notes p{color:#688799}@media(max-width:650px){#detail.fiber-inspector{padding:16px;max-height:calc(100dvh - 100px)}#detail.fiber-inspector .inspector-head{top:-16px}}

#detail.fiber-inspector .inspector-head{gap:9px;align-items:center;padding:0 0 12px;margin-bottom:14px}#detail.fiber-inspector .inspector-head .fiber-inspector-actions{flex:1;min-width:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:0;border:0}#detail.fiber-inspector .inspector-head .fiber-inspector-actions button{height:30px;padding:5px 7px;font-size:11px;line-height:18px}#detail.fiber-inspector .inspector-head #closeInspector{flex:0 0 28px;margin:0!important}#detail.fiber-inspector>.fiber-inspector-kicker{margin:0 0 9px;font-size:8px;letter-spacing:1.3px}
#detail.fiber-inspector .strands{gap:4px;padding:0;grid-template-columns:repeat(12,minmax(0,1fr))}#detail.fiber-inspector .strand,#detail.fiber-inspector .strand.used{width:100%;height:auto;aspect-ratio:1;border:0;border-radius:50%;box-shadow:none;outline:none;display:grid;place-items:center;line-height:1;font-size:8px;font-weight:600;padding:0;text-shadow:none}

#detail.fiber-inspector .fiber-inspector-id{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 5px;padding:10px 11px;background:#f3f7fa;border:1px solid #e4ebf0;border-radius:7px;line-height:1.4}#detail.fiber-inspector .fiber-inspector-id span{font-size:10px;font-weight:500;color:#8a9fac;flex-shrink:0}#detail.fiber-inspector .fiber-inspector-id strong{font-size:12px;font-weight:650;color:#496d80;overflow-wrap:anywhere;text-align:right;letter-spacing:.3px}
#detail.fiber-inspector .hex-color-label{display:none!important}#detail.fiber-inspector .cable-color-editor{grid-template-columns:1fr}

#detail .inspector-color,#detail .cable-color-editor,#detail details:has(#inspectorFiberColor){display:none!important}
/* Refined minimal Fiber Cable Inspector. */
#detail.fiber-inspector{width:325px;padding:20px;background:#fff;border:1px solid #e0e8ed;border-radius:14px;box-shadow:0 12px 40px #22485e18;bottom:auto;max-height:calc(100dvh - 105px)}#detail.fiber-inspector>.fiber-inspector-kicker{font-size:9px;font-weight:700;letter-spacing:1.8px;color:#91a5b3;margin:0 0 14px}#detail.fiber-inspector .inspector-head{position:relative;top:auto;padding:0 0 17px;margin:0 0 20px;border-bottom:1px solid #edf2f5;gap:10px;background:transparent}#detail.fiber-inspector .inspector-head .fiber-inspector-actions{gap:6px}#detail.fiber-inspector .inspector-head .fiber-inspector-actions button{height:31px;border-radius:6px;font-size:11px;font-weight:500;border-color:#e4eaee;background:#f6f9fb;color:#718c9e}#detail.fiber-inspector .inspector-head #edit{background:#eaf5f2;border-color:#d8e9e4;color:#347d75}#detail.fiber-inspector .inspector-head #delete{background:#fff5f4;border-color:#f0e0df;color:#b07476}#detail.fiber-inspector .inspector-head #featureUndo:disabled{color:#b0bdc6;background:#fafcfd;border-color:#edf1f4}#detail.fiber-inspector h2{font-size:22px;font-weight:650;line-height:1.35;letter-spacing:-.45px;color:#315568;margin:0 0 3px}#detail.fiber-inspector .fiber-inspector-id{margin:14px 0 20px;padding:11px 12px;border:1px solid #e5edf1;border-radius:8px;background:#f7fafc;gap:12px}#detail.fiber-inspector .fiber-inspector-id span{font-size:10px;font-weight:500;color:#90a3b1}#detail.fiber-inspector .fiber-inspector-id strong{font-size:12px;font-weight:600;letter-spacing:.5px;color:#52788e}#detail.fiber-inspector .fiber-inspector-metrics{padding:0;gap:10px;grid-template-columns:1.3fr 1fr;align-items:stretch}#detail.fiber-inspector .fiber-inspector-metrics>div{padding:15px 13px 16px;border:1px solid #e0eceb;border-radius:9px;background:linear-gradient(145deg,#eef7f4,#f7fbfa);gap:9px;min-width:0}#detail.fiber-inspector .fiber-inspector-metrics>div+div{border:1px solid #e5edf3;padding:15px 13px 16px;background:linear-gradient(145deg,#f1f6fa,#fafcfd)}#detail.fiber-inspector .fiber-inspector-metrics small{font-size:10px;line-height:1.3;color:#88a49f}#detail.fiber-inspector .fiber-inspector-metrics>div+div small{color:#91a6b6}#detail.fiber-inspector .fiber-inspector-metrics strong{font-size:25px;font-weight:600;letter-spacing:-.6px;line-height:1.15;color:#3d807b;overflow-wrap:anywhere}#detail.fiber-inspector .fiber-inspector-metrics>div+div strong{color:#6789a2}#detail.fiber-inspector .fiber-length-breakdown{font-size:10px;color:#96aab6;line-height:1.6;margin:11px 1px 0}#detail.fiber-inspector .fiber-inspector-notes{margin-top:18px;padding:13px 0 0;border-top:1px solid #edf2f5;border-bottom:0}#detail.fiber-inspector .fiber-inspector-notes strong{font-size:10px;color:#8fa5b4}#detail.fiber-inspector .fiber-inspector-notes p{font-size:11px;line-height:1.65;color:#7893a4}@media(max-width:650px){#detail.fiber-inspector{padding:17px;width:min(325px,calc(100% - 85px));max-height:calc(100dvh - 110px)}#detail.fiber-inspector h2{font-size:20px}}

#detail.fiber-inspector .fiber-report-category{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:-9px 0 18px;padding:0 2px}#detail.fiber-inspector .fiber-report-category span{font-size:10px;color:#97aab6}#detail.fiber-inspector .fiber-report-category strong{font-size:11px;font-weight:500;color:#668d99}#detail.fiber-inspector .fiber-length-report{margin-top:20px;padding-top:16px;border-top:1px solid #eaf0f4}#detail.fiber-inspector .fiber-length-report h3{font-size:11px;font-weight:600;color:#6c899c;margin:0 0 12px}#detail.fiber-inspector .fiber-length-report dl{margin:0}#detail.fiber-inspector .fiber-length-report dl>div{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:0;padding:8px 0;border-bottom:1px solid #f1f5f7}#detail.fiber-inspector .fiber-length-report dl>div:last-child{border:0}#detail.fiber-inspector .fiber-length-report dt{font-size:10px;color:#93a7b4}#detail.fiber-inspector .fiber-length-report dd{font-size:11px;font-weight:600;color:#5c8094;margin:0;font-variant-numeric:tabular-nums}
#detail.fiber-inspector .fiber-report-category{margin:-7px 0 18px;padding:11px 12px;gap:12px;background:#f7fafb;border:1px solid #e4ecef;border-radius:8px}#detail.fiber-inspector .fiber-report-category span{font-size:10px;font-weight:500;color:#8ba0ad}#detail.fiber-inspector .fiber-report-category strong{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid #cde5df;border-radius:6px;background:#e8f5ef;color:#28765d;font-size:11px;font-weight:700;line-height:1.2;letter-spacing:.1px}#detail.fiber-inspector .fiber-report-category strong:before{content:'';display:block;width:5px;height:5px;border-radius:50%;background:#47977a}

.join-box-dialog .join-core-note.odf-derived-comment{background:#edf5f7;color:#426a7a;cursor:default;font-weight:500}.join-box-dialog .join-core-note.odf-derived-comment:focus{outline:1px solid #98bbc6;outline-offset:-1px;background:#e9f3f6}

#detail.fiber-inspector .fiber-color-reference{margin-top:18px;padding-top:16px;border-top:1px solid #eaf0f4}#detail.fiber-inspector .fiber-color-reference h3{margin:0 0 12px;font-size:11px;font-weight:600;color:#6c899c}#detail.fiber-inspector .fiber-color-reference ol{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px 5px;list-style:none;padding:10px 8px;margin:0;background:#f5f8fa;border-radius:8px}#detail.fiber-inspector .fiber-color-reference li{display:flex;align-items:center;gap:6px;min-width:0;padding:4px 0;font-size:9px;color:#718b9c;line-height:1.4;white-space:nowrap}#detail.fiber-inspector .fiber-color-reference li i{display:block;flex:0 0 14px;width:14px;height:14px;border:0;border-radius:50%;box-shadow:none}#detail.fiber-inspector .fiber-color-reference li b{font-size:9px;font-weight:600;color:#5e7a8f;margin-right:2px}#detail.fiber-inspector .fiber-color-reference p{font-size:9px;line-height:1.5;color:#9bafba;margin:8px 0 0}

#detail.fiber-inspector .fiber-color-reference ol{grid-template-columns:repeat(12,minmax(0,1fr));gap:4px;padding:0;background:transparent;border-radius:0}#detail.fiber-inspector .fiber-color-reference li{display:grid;place-items:center;width:100%;height:auto;aspect-ratio:1;padding:0;line-height:1;font-size:8px;font-weight:600;border:0;border-radius:50%;box-shadow:none;outline:none;gap:0}

#detail.fiber-inspector .fiber-report-boundary{border:1px solid #d5e2e9;border-radius:10px;background:#fff;padding:15px;box-sizing:border-box}#detail.fiber-inspector .inspector-head{margin-bottom:14px;border-bottom:0;padding-bottom:0}#detail.fiber-inspector .fiber-report-boundary h2{font-size:20px}#detail.fiber-inspector .fiber-report-boundary .fiber-inspector-id{padding:9px 10px;margin-bottom:17px}#detail.fiber-inspector .fiber-report-boundary .fiber-inspector-metrics{gap:8px}#detail.fiber-inspector .fiber-report-boundary .fiber-inspector-metrics>div,#detail.fiber-inspector .fiber-report-boundary .fiber-inspector-metrics>div+div{padding:12px 10px}#detail.fiber-inspector .fiber-report-boundary .fiber-inspector-metrics strong{font-size:22px}#detail.fiber-inspector .fiber-report-boundary .fiber-color-reference ol{gap:3px}#detail.fiber-inspector .fiber-report-boundary .fiber-color-reference li{font-size:7px}
#detail.fiber-inspector{top:48px;bottom:auto;max-height:calc(100dvh - 130px);overflow-y:auto;overflow-x:hidden;scroll-padding-bottom:26px;padding-bottom:23px}#detail.fiber-inspector .fiber-report-boundary{padding-bottom:23px}#detail.fiber-inspector .fiber-color-reference{padding-bottom:9px}#detail.fiber-inspector .fiber-color-reference ol{padding-bottom:3px}@media(max-width:650px){#detail.fiber-inspector{top:48px;bottom:auto;max-height:calc(100dvh - 135px);padding-bottom:22px}}
#detail.fiber-inspector{right:28px}#detail.fiber-inspector .fiber-color-reference li{border:1px solid #cddbe3;box-sizing:border-box;box-shadow:none}#detail.fiber-inspector .fiber-color-reference li:nth-child(6){border-color:#bbcdd8}@media(max-width:650px){#detail.fiber-inspector{right:12px}}

#detail.fiber-inspector .fiber-inspector-metrics{grid-template-columns:1fr 1.3fr}

.fiber-core-fan{display:block;width:100%;height:auto;margin:4px 0 0;overflow:visible}.fiber-color-reference:has(.fiber-core-fan) ol{display:grid!important;grid-template-columns:repeat(12,minmax(0,1fr));gap:0!important;justify-items:center;margin-top:0!important}.fiber-color-reference:has(.fiber-core-fan) ol li{width:18px;height:18px;font-size:9px}

/* A subtle technical panel highlights the jacket and individual cores. */
#detail .fiber-color-reference:has(.fiber-core-fan){margin-top:14px;padding:13px 10px 16px;border:1px solid #cbdfe7;border-radius:12px;background:linear-gradient(155deg,#f8fcff 0%,#edf6fa 60%,#f0f9f6 100%);box-shadow:inset 0 1px 0 #fff,0 3px 10px #264d6408}
#detail .fiber-color-reference:has(.fiber-core-fan) h3{color:#315d72;font-weight:700;margin-top:0}
#detail .fiber-core-fan{filter:drop-shadow(0 2px 2px #24455b12)}
#detail .fiber-color-reference:has(.fiber-core-fan) ol li{box-shadow:0 2px 4px #24455b1c;font-weight:700}

#detail .fiber-color-reference:has(.fiber-core-fan) h3{text-align:center;overflow-wrap:anywhere}

#detail .fiber-color-reference:has(.fiber-core-fan) h3{position:relative;left:-6px}

#dialog input[name="brand"]::placeholder{color:#84959e;opacity:.4;font-weight:400}

/* Keep the front socket clear and show its patch cord only for In use ports. */
.odf-detail-workspace .odf-target{padding-left:53px}
.odf-connectivity .odf-adapter-3d .odf-front-patch{left:-23px;right:auto;transform:rotate(180deg);transform-origin:center;--pigtail-color:#f0bd32}
.odf-connectivity .odf-target>span:not(.odf-adapter-3d){left:158px;right:4px;font-size:10px}
.odf-detail-workspace .odf-target{width:245px}
.odf-detail-workspace .odf-join-targets{min-width:245px}

.odf-detail-workspace .odf-join-canvas{grid-template-columns:235px 245px;min-width:570px}.odf-detail-workspace .odf-join-targets>.odf-fiber-title{width:245px;max-width:100%;box-sizing:border-box}.odf-detail-workspace .odf-target{box-sizing:border-box}

.odf-detail-workspace .odf-target{padding-left:68px}.odf-connectivity .odf-target>span:not(.odf-adapter-3d){left:173px}

.odf-connectivity .odf-pigtail-plug .odf-pigtail-tail{right:-40px;width:26px}

.odf-connectivity .odf-adapter-3d .odf-front-patch{left:-17px;right:auto;top:0;height:18px;border-left:0;border-right:0;background:#3a9fce;box-shadow:none;border-radius:0;z-index:3}
.odf-connectivity .odf-adapter-3d:has(.odf-front-patch){border-left-color:#3a9fce}
.odf-connectivity .odf-adapter-3d:has(.odf-front-patch):after{display:none}

.patch-designer .patch-ports>.rack-patch-cords{position:absolute;left:-40px;top:0;width:calc(100% + 80px);height:100%;pointer-events:none;z-index:4;overflow:visible}
.patch-designer .rack-patch-plug{position:absolute;left:4px;right:4px;top:4px;height:15px;background:linear-gradient(90deg,#167cb9,#48b1dd,#167cb9);border:1px solid #176b96;border-radius:1px;z-index:5}
.patch-designer .rack-patch-plug:after{content:'';position:absolute;left:50%;transform:translateX(-50%);top:12px;width:6px;height:12px;border-radius:0 0 3px 3px;background:repeating-linear-gradient(#3098c2 0 2px,#197aa7 2px 3px)}

.patch-designer .rack-patch-plug:after{display:none}

.patch-designer .rack-patch-plug{left:2px;right:2px;top:1px;height:16px;border:1px solid #176d9e;border-radius:2px;background:linear-gradient(90deg,#197dad 0%,#45acd3 22%,#65c0df 47%,#399dc8 72%,#1677a7 100%);box-shadow:inset 0 1px 0 #a0dded,inset 0 -2px 0 #176b93,0 1px 2px #102f4050;box-sizing:border-box}
.patch-designer .rack-patch-plug:before{content:'';position:absolute;left:3px;right:3px;top:-2px;height:4px;border:1px solid #267ca4;border-radius:1px;background:#72c7e2;box-shadow:inset 0 1px 0 #b3e6f2}
.patch-designer .rack-port-in-use .socket{box-shadow:inset 0 1px 2px #07192370,0 1px 0 #fff,0 0 0 1px #4f92ac}

/* Match the installed rack connector to the pigtail body below. */
.patch-designer .rack-patch-plug{left:1px;right:1px;top:0;height:17px;border:1px solid #267fa9;border-radius:1px;background:#3a9fce;box-shadow:inset 0 1px 0 #6bb9dc,0 1px 1px #233d4d20}
.patch-designer .rack-patch-plug:before{left:3px;right:3px;top:6px;height:3px;border:0;border-radius:2px;background:#243c49;box-shadow:inset 0 1px 0 #153348}
.patch-designer .patch-ports{background:linear-gradient(180deg,#f3f6f8,#e3eaef);border-color:#a7b8c3;box-shadow:inset 0 1px 0 #fff,0 2px 6px #243e4d12}
.patch-designer .patch-port>b{color:#294c62;font-variant-numeric:tabular-nums}
.patch-designer .rack-port-in-use .socket{border-color:#749caf!important;background:#234553!important}

.map-type-cards{max-height:65vh;overflow-y:auto}.google-map-credit{display:inline-block;font-weight:600;color:#3c4043;background:#fff;padding:3px 8px;margin-right:6px;font-size:13px}.leaflet-control-attribution:has(.google-map-credit){max-width:calc(100vw - 100px);white-space:normal;background:#fff!important;color:#333!important;line-height:1.4}

.google-map-credit{padding:10px 10px 5px;vertical-align:middle}.google-map-credit img{height:16px;width:auto;display:block}.leaflet-control-attribution:has(.google-map-credit){padding-right:8px}

.map-tools .map-type-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.map-tools .map-type-cards button{width:100%;box-sizing:border-box;min-height:38px}.google-basemap .leaflet-tile-pane{filter:none!important;opacity:1!important}



.fiber-roll-vector-hit:after{content:"";position:absolute;left:50%;top:50%;width:24px;height:24px;transform:translate(-50%,-50%);border-radius:50%;background:transparent;pointer-events:auto}

.fiber-selected-route{filter:drop-shadow(0 0 1px #fff) drop-shadow(0 0 3px #fff);stroke-linecap:round;stroke-linejoin:round}

.join-box-dialog .joinbox-coordinates{display:flex;align-items:center;gap:6px;margin-top:7px;flex-wrap:wrap}.joinbox-coordinates>span{font-size:9px;letter-spacing:.3px;color:#54717f;font-weight:650}.join-box-dialog .joinbox-coordinate-value{width:220px;max-width:60vw;min-height:27px;box-sizing:border-box;padding:5px 8px;border:1px solid #cfdee4;border-radius:5px;background:#fff;color:#33596b;font-size:11px;font-variant-numeric:tabular-nums;cursor:text}.join-box-dialog .joinbox-copy-coordinates{min-height:27px;padding:4px 9px;border:1px solid #c8dfdc;border-radius:5px;background:#eaf5f2;color:#337b79;font-size:10px}.joinbox-copy-coordinates:hover{background:#dcefeb}@media print{.joinbox-copy-coordinates{display:none!important}}

.join-box-dialog .joinbox-coordinate-value{width:178px;min-height:24px;padding:4px 6px;font-size:10px}.join-box-dialog .joinbox-copy-coordinates{min-height:24px;padding:3px 7px;font-size:9px}.join-box-dialog .joinbox-coordinates{gap:5px}

.join-box-dialog .joinbox-actions .joinbox-coordinates{display:flex;align-items:center;margin:0 0 0 8px;gap:5px;flex-wrap:nowrap}.join-box-dialog .joinbox-actions .joinbox-copy-coordinates{min-height:24px;padding:3px 7px;font-size:9px}.join-box-dialog .joinbox-actions .joinbox-coordinates>span{white-space:nowrap}

.join-box-dialog .joinbox-actions .joinbox-coordinates{gap:4px;padding:3px;border:1px solid #b6d5d2;border-radius:7px;background:#e7f3f2;box-shadow:0 1px 3px #235f6410}
.join-box-dialog .joinbox-actions .joinbox-coordinates>span{font-size:8px;letter-spacing:0;padding:0 4px;color:#285d65}
.join-box-dialog .joinbox-actions .joinbox-coordinate-value{width:150px;height:23px;min-height:23px;padding:3px 5px;border:1px solid #abc8c9;border-radius:4px;background:#fff;font-size:9px;color:#244e5d}
.join-box-dialog .joinbox-actions .joinbox-copy-coordinates{width:auto;height:23px;min-height:23px;padding:3px 6px;border:1px solid #237d78;border-radius:4px;background:#237d78;color:#fff;font-size:9px;line-height:1.2}
.join-box-dialog .joinbox-actions .joinbox-copy-coordinates:hover{background:#185f5c}

.join-box-dialog .joinbox-actions .joinbox-coordinates{order:10;margin-left:auto}.join-box-dialog .joinbox-actions .joinbox-summary{margin-left:8px}

.join-box-dialog .joinbox-actions .joinbox-coordinates{background:transparent;border-color:transparent;box-shadow:none;padding:3px 0}.join-box-dialog .joinbox-actions .joinbox-coordinates>span{color:#657986}.join-box-dialog .joinbox-actions .joinbox-coordinate-value{background:transparent;border-color:#d7e1e7;color:#546e7c}

.join-box-dialog>.dialoghead{display:grid;grid-template-columns:32px minmax(0,1fr) 32px;align-items:center;gap:8px}.join-box-dialog>.dialoghead>div{grid-column:2;text-align:center;min-width:0}.join-box-dialog>.dialoghead h2{overflow-wrap:anywhere}.join-box-dialog>.dialoghead>.joinbox-close{grid-column:3;justify-self:end}

.join-box-dialog>.dialoghead h2{font-size:20px;font-weight:650;line-height:1.35;letter-spacing:.25px;color:#294e60;margin:0;padding:2px 0;text-wrap:balance}

.join-box-dialog>.dialoghead h2{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.joinbox-id-badge{display:inline-block;padding:4px 10px;border:1px solid #d3dfe5;border-radius:6px;background:#edf2f5;color:#496576;font-size:12px;font-weight:600;line-height:1.4;letter-spacing:.8px;font-variant-numeric:tabular-nums}

.join-box-dialog>.dialoghead>div{justify-self:center;max-width:100%}.join-box-dialog>.dialoghead h2{display:inline-flex;gap:0;padding:0;border:1px solid #cedce3;border-radius:8px;background:#f1f5f7;overflow:hidden;font-size:16px;line-height:1.4;flex-wrap:nowrap;padding-left:14px}.join-box-dialog>.dialoghead h2 .joinbox-id-badge{margin-left:14px;padding:9px 13px;border:0;border-left:1px solid #cedce3;border-radius:0;background:#e5edf1;color:#345a6d;font-size:13px;letter-spacing:.6px;white-space:nowrap}

/* Keep twelve-core tubes, adapters and customer rows on the same rhythm. */
.odf-detail-workspace .odf-join-targets>.odf-fiber-title,.odf-detail-workspace .odf-port-table thead th{height:58px;vertical-align:middle}.odf-detail-workspace .odf-target:nth-child(12n+2):not(:nth-child(2)){margin-top:12px;border-top-width:1px}.odf-detail-workspace .odf-port-table tbody tr[data-port-row]>td{border-top-width:1px}.odf-detail-workspace .odf-port-table .odf-tube-spacer>td{height:12px;min-height:12px;padding:0;border:0;background:transparent;line-height:0;font-size:0}

.odf-detail-workspace .odf-port-table tbody tr.odf-tube-spacer{height:12px;background:transparent}.odf-detail-workspace .odf-port-table tbody tr.odf-tube-spacer>td:last-child{display:table-cell!important;height:12px!important;padding:0!important;border:0!important;background:transparent!important}

.odf-detail-workspace .odf-port-table tbody tr.odf-tube-spacer>td{width:auto!important;min-width:0!important;max-width:none!important}

.odf-detail-workspace .odf-target:nth-child(12n+2):not(:nth-child(2)){border-top:1px solid #7d8e98}

.fiber-core-tube+.fiber-core-tube{margin-top:14px;padding-top:12px;border-top:1px solid #d6e3eb}.fiber-color-reference .fiber-core-tube>ol{display:flex;justify-content:center;gap:0}.fiber-color-reference .fiber-core-tube>ol>li{flex:0 0 24px;box-sizing:border-box}

#detail .fiber-color-reference .fiber-core-tube>ol{display:grid!important;grid-template-columns:repeat(24,minmax(0,1fr));justify-items:center;gap:0!important;width:100%;box-sizing:border-box;padding:0 0 3px;margin:0!important}#detail .fiber-color-reference .fiber-core-tube>ol>li{width:18px;height:18px;min-width:0;flex:none;margin:0;box-sizing:border-box}

.fiber-roll-icon,.fiber-roll-icon *,.fiber-roll-icon:before,.fiber-roll-icon:after,.cut-end-handle,.cut-end-handle *{cursor:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M7%2013V4a1.5%201.5%200%200%201%203%200v6-2a1.5%201.5%200%200%201%203%200v2-1a1.5%201.5%200%200%201%203%200v2-1a1.5%201.5%200%200%201%203%200v6c0%204-2%206-6%206-3%200-4-2-6-4l-3-4c-1-2%201-3%202-2l1%201Z%22%20fill%3D%22white%22%20stroke%3D%22%23333%22%20stroke-width%3D%221.3%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E") 8 5,pointer!important}

.odf-detail-workspace .odf-tube-band>span{font-weight:700;letter-spacing:.25px;font-size:11px}

#operationsPanel.fiber-trace-only{width:min(620px,94vw)}#operationsPanel.fiber-trace-only>.ops-metrics,#operationsPanel.fiber-trace-only>section,#operationsPanel.fiber-trace-only>.ops-grid>section:first-child{display:none}#operationsPanel.fiber-trace-only>.ops-grid{display:block}

#operationsPanel.fiber-trace-only{position:fixed;inset:auto 0 0 auto;margin:0;max-width:none;box-sizing:border-box;height:300px;max-height:45dvh;padding:12px 18px;border-radius:10px 10px 0 0;border:1px solid #bfd0da;box-shadow:0 -5px 22px #17394e20;z-index:1000;background:#fff;overflow:auto}#operationsPanel.fiber-trace-only .ops-heading{margin-bottom:8px;align-items:center}#operationsPanel.fiber-trace-only .ops-heading small{display:none}#operationsPanel.fiber-trace-only .ops-heading h2{font-size:16px;margin:0}#operationsPanel.fiber-trace-only .ops-grid{margin-top:0}#operationsPanel.fiber-trace-only .ops-grid>section>h3,#operationsPanel.fiber-trace-only .ops-grid>section>.ops-muted{display:none}#operationsPanel.fiber-trace-only #traceForm{display:flex;align-items:end;gap:10px;flex-wrap:wrap}#operationsPanel.fiber-trace-only #traceForm>label{min-width:160px;flex:1}#operationsPanel.fiber-trace-only #traceForm label{margin-bottom:0;gap:3px}#operationsPanel.fiber-trace-only .trace-fields{flex:1;min-width:220px}#operationsPanel.fiber-trace-only #traceForm select,#operationsPanel.fiber-trace-only #traceForm input{padding:5px;box-sizing:border-box}#operationsPanel.fiber-trace-only #traceForm button{padding:7px 12px}#operationsPanel.fiber-trace-only #traceResult>ol{display:none}.trace-path-graph{display:flex;align-items:center;overflow-x:auto;padding:14px 4px 8px;min-height:95px}.trace-device{flex:0 0 110px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:5px}.trace-device-icon{display:grid;place-items:center;width:30px;height:30px;border:1px solid #9ab9c8;background:#edf5fa;color:#34647c;border-radius:7px;font-size:21px}.trace-device strong{font-size:11px;overflow-wrap:anywhere}.trace-device small,.trace-core-edge small{font-size:10px;color:#69808d}.trace-core-edge{flex:0 0 145px;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center}.trace-core-edge strong{font-size:10px;max-width:140px;overflow-wrap:anywhere}.trace-core-line{width:100%;height:3px;background:#37969d;line-height:2px;text-align:right;color:#267e85;font-size:20px}

.trace-path-graph{align-items:flex-start;padding-top:12px;min-height:130px}.trace-device{position:relative;flex-basis:105px;padding-top:0;gap:9px}.trace-device-icon{position:relative;z-index:2;width:14px;height:14px;margin:0 0 0;border:0;border-radius:0;background:#f6bc29;box-shadow:none}.trace-device-icon.trace-joint{clip-path:polygon(25% 0,75% 0,100% 25%,100% 75%,75% 100%,25% 100%,0 75%,0 25%)}.trace-device-icon.trace-odf{background:#eab933;clip-path:polygon(50% 0,100% 100%,0 100%)}.trace-device-icon.trace-end{border-radius:50%;background:#319fa4}.trace-device strong{font-size:10px}.trace-core-edge{position:relative;flex-basis:155px;padding-top:5px;gap:0}.trace-core-line{height:4px;background:#efa93d;position:relative;width:calc(100% + 105px);margin-left:-52.5px;margin-right:-52.5px;border-radius:2px}.trace-core-line:after{content:"";position:absolute;right:45%;top:-4px;border-left:7px solid #efa93d;border-top:6px solid transparent;border-bottom:6px solid transparent}.trace-fiber-info{display:flex;flex-direction:column;align-items:center;gap:5px;margin-top:17px;padding:0 5px}.trace-fiber-info>span{display:flex;gap:6px;align-items:center;font-size:10px;color:#45606e}.trace-core-dot{display:block;width:15px;height:15px;border:3px solid #278fc9;border-radius:50%;background:var(--trace-core-color);box-sizing:border-box}.trace-fiber-info small{font-size:9px;white-space:nowrap}

.fiber-trace-sidebar[hidden]{display:none!important}.fiber-trace-sidebar{position:fixed;z-index:999;width:250px;max-width:70vw;overflow-y:auto;box-sizing:border-box;padding:12px;background:#fff;border:1px solid #c5d5df;box-shadow:3px 0 15px #23415315;border-radius:0 0 8px 0;color:#294a5d}.trace-side-heading{display:flex;justify-content:space-between;align-items:center;font-size:13px}.trace-side-heading button{border:0;background:transparent;font-size:21px;color:#567480;padding:0 4px}.trace-total-length{display:flex;align-items:center;gap:12px;margin:10px 0 3px;font-size:11px;color:#607a89}.trace-total-length strong{color:#295b70;font-size:14px}.fiber-trace-sidebar .trace-path-graph{flex-direction:column;align-items:center;overflow:visible;padding-top:15px;min-height:0}.fiber-trace-sidebar .trace-device{flex:none;width:100%;min-height:42px;display:grid;grid-template-columns:20px 1fr;grid-template-rows:auto auto;text-align:left;column-gap:10px;row-gap:0;padding:0}.fiber-trace-sidebar .trace-device-icon{grid-row:1 / span 2;justify-self:center;align-self:center}.fiber-trace-sidebar .trace-device strong{align-self:end}.fiber-trace-sidebar .trace-device small{grid-column:2;align-self:start}.fiber-trace-sidebar .trace-core-edge{flex:none;width:100%;min-height:90px;display:flex;flex-direction:row;padding:0;align-items:stretch}.fiber-trace-sidebar .trace-core-line{width:4px;height:auto;min-height:90px;margin:0 0 0 8px;flex:0 0 4px}.fiber-trace-sidebar .trace-core-line:after{right:-4px;top:45%;border-top:7px solid #efa93d;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:0}.fiber-trace-sidebar .trace-fiber-info{align-items:flex-start;justify-content:center;margin:0;padding:6px 12px}.fiber-trace-sidebar>.ops-muted{font-size:10px;line-height:1.5}.fiber-trace-sidebar .trace-total-length{justify-content:space-between}

#operationsPanel.fiber-trace-only{background:#f8fbfd;border-color:#c7d9e3;box-shadow:0 -5px 24px #24475c18;border-radius:12px 12px 0 0}
#operationsPanel.fiber-trace-only .ops-heading{padding-bottom:8px;border-bottom:1px solid #e0eaf0}#operationsPanel.fiber-trace-only .ops-heading h2{color:#2d566b;font-weight:650;letter-spacing:.2px}
#operationsPanel.fiber-trace-only #traceResult>.trace-total-length{display:inline-flex;padding:5px 10px;background:#eaf3f8;border:1px solid #d5e5ee;border-radius:6px;margin-top:9px}
#operationsPanel.fiber-trace-only .trace-path-graph{padding:14px 10px 12px;scrollbar-width:thin;scrollbar-color:#b6cbd7 transparent}
#operationsPanel.fiber-trace-only .trace-device{flex-basis:115px;gap:8px}#operationsPanel.fiber-trace-only .trace-device strong{background:#fff;border:1px solid #d6e3eb;border-radius:6px;padding:5px 8px;max-width:108px;box-sizing:border-box;box-shadow:0 2px 4px #2b4a5a08}
#operationsPanel.fiber-trace-only .trace-device small{font-size:9px;color:#78909e}#operationsPanel.fiber-trace-only .trace-device-icon{width:15px;height:15px}
#operationsPanel.fiber-trace-only .trace-core-edge{flex-basis:180px}#operationsPanel.fiber-trace-only .trace-core-line{width:calc(100% + 115px);margin-left:-57.5px;margin-right:-57.5px;height:3px;background:linear-gradient(90deg,#e2a435,#efbf52,#e2a435)}
#operationsPanel.fiber-trace-only .trace-fiber-info{margin-top:14px;padding:8px 12px;background:#fff;border:1px solid #d9e6ee;border-radius:8px;min-width:145px;box-sizing:border-box;box-shadow:0 2px 7px #25465708;gap:6px}#operationsPanel.fiber-trace-only .trace-fiber-info strong{color:#325d72;font-size:11px}#operationsPanel.fiber-trace-only .trace-fiber-info>span{font-weight:600;color:#53768b}#operationsPanel.fiber-trace-only #traceResult>p{margin:3px 0;color:#728a99;font-size:10px}
.fiber-trace-sidebar{background:#fafcfe;border-color:#cedee7;scrollbar-width:thin;scrollbar-color:#b6cbd7 transparent}.fiber-trace-sidebar .trace-side-heading{padding-bottom:9px;border-bottom:1px solid #e0eaf0;color:#325b70}.fiber-trace-sidebar .trace-total-length{padding:8px;background:#edf5f9;border:1px solid #d9e7ef;border-radius:7px}.fiber-trace-sidebar .trace-fiber-info{margin:5px 0 5px 12px;padding:9px 11px;background:#fff;border:1px solid #dce7ee;border-radius:7px;box-shadow:0 2px 4px #294b5e06;flex:1;min-width:0}.fiber-trace-sidebar .trace-fiber-info strong{color:#345d73}.fiber-trace-sidebar .trace-core-line{background:#eab249}.trace-core-dot{box-shadow:0 0 0 2px #e9f2f8}

.trace-fiber-info>small{order:-2;font-weight:650;color:#315c72}.trace-fiber-info>strong{order:-1}.trace-fiber-info>span{order:0}

#operationsPanel.fiber-trace-only .trace-path-graph>.trace-total-length{flex:0 0 160px;align-self:center;display:flex;flex-direction:column;align-items:flex-start;gap:7px;margin:0 12px 0 22px;padding:12px 14px;border:1px solid #c8dfe6;border-radius:8px;background:#edf6f8}#operationsPanel.fiber-trace-only .trace-path-graph>.trace-total-length strong{font-size:18px;color:#286775}

.trace-device-icon.trace-joint,#operationsPanel.fiber-trace-only .trace-device-icon.trace-joint{width:32px;height:24px;clip-path:none;background:transparent;filter:drop-shadow(0 1px 1px #294d651f)}.trace-device-icon.trace-joint svg{display:block;width:32px;height:24px}.fiber-trace-sidebar .trace-device{grid-template-columns:32px 1fr}

.trace-device-icon.trace-joint,#operationsPanel.fiber-trace-only .trace-device-icon.trace-joint,.trace-device-icon.trace-joint svg{width:24px;height:24px}

.trace-cable-roll{position:absolute;left:var(--roll-position);top:50%;transform:translate(-50%,-50%);z-index:3;display:flex;flex-direction:column;align-items:center;width:43px;line-height:normal}.trace-cable-roll svg{display:block;width:43px;height:26px;filter:drop-shadow(0 1px 1px #213e4b20)}.trace-cable-roll>small{position:absolute;top:25px;white-space:nowrap;font-size:8px!important;color:#526c79;background:#f8fbfd;border-radius:3px;padding:1px 3px}.fiber-trace-sidebar .trace-cable-roll{left:50%;top:var(--roll-position);transform:translate(-50%,-50%)}.fiber-trace-sidebar .trace-cable-roll svg{transform:rotate(90deg);width:36px;height:24px}.fiber-trace-sidebar .trace-cable-roll>small{left:-22px;top:29px;font-size:8px!important}#operationsPanel.fiber-trace-only .trace-core-edge:has(.trace-cable-roll) .trace-fiber-info{margin-top:27px}

#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device{min-height:112px;isolation:isolate}#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device:before{content:"";position:absolute;z-index:-1;top:-5px;left:calc(50% - 4px);width:8px;height:102px;box-sizing:border-box;border:1px solid #77868c;border-radius:2px 2px 1px 1px;background:linear-gradient(90deg,#98a5ac,#dce3e6 46%,#a5b1b7);box-shadow:2px 2px 3px #20394716}#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device:after{content:"";position:absolute;z-index:-1;left:calc(50% - 16px);top:98px;width:32px;height:5px;border-radius:50%;background:#dce8df}#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device strong{position:relative;z-index:2}#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device small{position:relative;z-index:2;background:#f8fbfd;padding:1px 4px;border-radius:3px}#operationsPanel.fiber-trace-only .trace-path-graph{padding-top:20px;min-height:145px}

.trace-node-roll{position:absolute;left:calc(50% + 12px);top:0;width:28px;z-index:4;display:flex;flex-direction:column;align-items:center;line-height:normal}.trace-node-roll svg{width:28px;height:27px;display:block}.trace-node-roll small{font-size:8px!important;white-space:nowrap;background:#f8fbfd;padding:1px 3px!important}.fiber-trace-sidebar .trace-node-roll{left:-5px;top:4px;transform:translateX(-50%)}.fiber-trace-sidebar .trace-device{padding-left:14px;box-sizing:border-box}

.trace-node-roll svg ellipse,.trace-cable-roll svg ellipse{stroke:#dca124}.trace-node-roll svg ellipse:first-child,.trace-cable-roll svg ellipse:first-of-type{fill:#fff8df}.trace-cable-roll svg path{stroke:#dca124}.trace-node-roll small,.trace-cable-roll>small{color:#8b681e!important;background:#fff9e9!important;border:1px solid #eee0b8;border-radius:3px;padding:2px 4px!important}

.loose-roll-hover-center{background:transparent;border:0;cursor:pointer}

.cut-end-handle.drawing-fiber-end>span{width:9px;height:9px;border:2px solid #258b78;background:#fff;box-shadow:0 0 0 3px #e2f4eecc}.cut-end-handle.drawing-fiber-end{cursor:crosshair}

.map-tools{width:46px;max-width:46px;padding:3px;gap:1px;box-sizing:border-box}.map-tools>button,.map-tools #finishDraw,.map-tools #undoPoint,.map-tools #cancelDraw{width:38px;height:40px;min-height:40px;padding:3px;gap:3px;font-size:8px}.map-tools>button svg{width:19px;height:19px}.map-tools>button:disabled{opacity:.35;cursor:default}.map-type-picker.map-layer-dock{position:absolute;left:auto;right:8px;top:auto;bottom:46px;width:28px;height:28px;z-index:700}.map-layer-dock .map-type-trigger{width:28px;height:28px;min-height:28px;border:1px solid #dce5e9;border-radius:4px;padding:3px;background:#fff;box-shadow:0 1px 5px #78858b33;align-items:center;justify-content:center}.map-layer-dock .map-type-trigger>.map-type-preview{display:none}.map-layer-dock .map-type-trigger b{position:static;display:flex;padding:0;background:transparent;font-size:0;line-height:0}.map-layer-dock .map-type-trigger b svg{width:19px;height:19px}.map-layer-dock .map-type-choices{left:auto;right:36px;top:auto;bottom:0;width:min(250px,calc(100vw - 90px));box-sizing:border-box}.map-layer-dock .map-type-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.map-layer-dock .map-type-cards button{width:100%;box-sizing:border-box;min-height:36px}.leaflet-control-zoom{margin-bottom:78px!important}

/* Match the right-hand map controls. */
.leaflet-control-zoom{margin-right:8px!important;margin-bottom:86px!important;box-shadow:none!important;border:0!important;border-radius:5px!important;overflow:hidden}.leaflet-control-zoom a{display:flex!important;align-items:center;justify-content:center;box-sizing:border-box!important;width:30px!important;height:30px!important;line-height:28px!important;background:#fff!important;color:#47616e!important;font-size:20px!important;font-weight:400!important;border:1px solid #d4dfe5!important;box-shadow:0 1px 4px #29465715!important}.leaflet-control-zoom a:first-child{border-radius:5px 5px 0 0!important}.leaflet-control-zoom a:last-child{border-top:0!important;border-radius:0 0 5px 5px!important}.map-type-picker.map-layer-dock{right:8px;bottom:50px;width:30px;height:30px}.map-layer-dock .map-type-trigger{box-sizing:border-box;width:30px;height:30px;min-height:30px;padding:5px;border:1px solid #d4dfe5;border-radius:5px;background:#fff;color:#47616e;box-shadow:0 1px 4px #29465715}.map-layer-dock .map-type-trigger b svg{width:18px;height:18px}.map-home{box-sizing:border-box;display:flex;align-items:center;justify-content:center;right:8px;bottom:14px;width:30px;height:30px;min-height:30px;padding:4px;border:1px solid #d4dfe5;border-radius:5px;background:#fff;color:#47616e;font-size:21px;line-height:1;box-shadow:0 1px 4px #29465715}.map-home:hover,.map-layer-dock .map-type-trigger:hover{background:#edf4f7}.map-home svg{width:18px;height:18px}

.leaflet-bottom.leaflet-right .leaflet-control-zoom{position:absolute!important;right:8px!important;bottom:86px!important;float:none!important;margin:0!important;display:flex!important;flex-direction:column;gap:6px;overflow:visible!important;background:transparent!important;border:0!important;box-shadow:none!important}.leaflet-control-zoom a:first-child,.leaflet-control-zoom a:last-child{border:1px solid #d4dfe5!important;border-radius:5px!important}

.leaflet-bottom.leaflet-right .leaflet-control-zoom{gap:0}.leaflet-control-zoom a:first-child{border-radius:5px 5px 0 0!important}.leaflet-control-zoom a:last-child{border-top:0!important;border-radius:0 0 5px 5px!important}

#dialog.compact-route-form .fiber-route-identity{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;grid-column:1 / -1}#dialog.compact-route-form .fiber-route-identity>.field{min-width:0;margin:0}#dialog.compact-route-form .fiber-route-identity input{width:100%;min-width:0;height:30px;min-height:30px;padding:5px 9px;line-height:18px;box-sizing:border-box;font-size:12px}

.reset-design-dialog{width:min(560px,94vw);box-sizing:border-box;color:#355363}.reset-design-dialog p{font-size:12px;line-height:1.6}.reset-design-counts{padding:12px;background:#edf4f8;border:1px solid #d5e3eb;border-radius:7px;font-weight:600;font-size:12px}.reset-design-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:18px}.reset-design-actions button{padding:8px 11px;font-size:11px;border:1px solid #cedde5;border-radius:6px}.reset-design-actions .reset-confirm{background:#ad3e44;color:white;border-color:#ad3e44}.reset-design-actions button:disabled{opacity:.4;cursor:default}

.reset-password-label{display:grid;gap:6px;font-size:12px;margin-top:14px}.reset-password-label strong{font-weight:650}.reset-password-input{padding:9px 10px;border:1px solid #c8d9e2;border-radius:6px;background:#fff;font-size:13px;width:100%;box-sizing:border-box}

.reset-design-dialog.reset-design-locked{width:min(390px,92vw)}.reset-access-symbol{display:grid;place-items:center;width:48px;height:48px;margin:18px auto 12px;border:1px solid #d5e5ec;border-radius:12px;background:#edf5f9;color:#3b7286}.reset-access-symbol svg{width:27px;height:27px}.reset-access-form>p{color:#68808e;text-align:center}.reset-access-form .reset-password-label{gap:5px}.reset-access-form .reset-username{font-size:14px;color:#365b6e}.reset-access-form .reset-design-actions{justify-content:space-between}.reset-access-form .reset-unlock{min-width:100px}




.join-box-dialog .join-fiber-title{height:24px;box-sizing:border-box;display:block;padding:4px 7px;border:1px solid #617480;border-bottom:0;background:#edf2f5;color:#294e63;font-size:12px;font-weight:700;line-height:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}

.join-box-dialog .join-fiber-title,.join-box-dialog .join-fiber-id,.join-box-dialog .join-core-table-head{height:28px;min-height:28px;box-sizing:border-box;font-size:11px;font-weight:600}.join-box-dialog .join-fiber-title{padding:5px 7px;line-height:17px}.join-box-dialog .join-fiber-id>span,.join-box-dialog .join-fiber-id>strong,.join-box-dialog .join-fiber-id .join-total-cores,.join-box-dialog .join-core-table-head>span{font-size:11px;font-weight:600;box-sizing:border-box;align-items:center}

/* Compact header cells: override legacy child heights as well as row heights. */
.join-box-dialog .join-all-column>.join-fiber-title,.join-box-dialog .join-all-column>.join-fiber-id,.join-box-dialog .join-all-column>.join-core-table-head{height:24px!important;min-height:24px!important;max-height:24px!important;box-sizing:border-box;margin:0;line-height:18px;overflow:hidden;border-color:#34444d;font-size:10px}.join-box-dialog .join-all-column>.join-fiber-title{padding:2px 6px;line-height:19px;font-size:11px}.join-box-dialog .join-fiber-id{grid-template-rows:minmax(0,1fr);padding:0!important}.join-box-dialog .join-fiber-id>span,.join-box-dialog .join-fiber-id>strong,.join-box-dialog .join-fiber-id>.join-total-cores,.join-box-dialog .join-core-table-head>span{height:100%!important;min-height:0!important;max-height:100%!important;box-sizing:border-box;margin:0;line-height:18px;padding-top:0!important;padding-bottom:0!important;font-size:10px;display:flex;align-items:center;overflow:hidden}

.join-box-dialog .join-all-column .join-tube-block.compact-tube:after{content:"Tube No.\a" attr(data-tube-number);display:grid;place-content:center;writing-mode:horizontal-tb;transform:none;white-space:pre;text-align:center;font-size:9px;font-weight:650;line-height:10px;letter-spacing:0;padding:0;box-sizing:border-box;overflow:hidden}

.join-box-dialog .join-all-column .join-tube-block.compact-tube:after{display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;transform:rotate(180deg);white-space:pre;text-align:center;font-size:9px;line-height:11px}

.join-box-dialog .join-all-column .join-tube-block.compact-tube:after{content:"Tube\aNo. " attr(data-tube-number)}

.odf-map-icon{overflow:visible;cursor:pointer}.odf-map-icon:before{content:"";position:absolute;left:50%;top:50%;width:30px;height:30px;transform:translate(-50%,-50%);border-radius:5px;background:transparent;pointer-events:auto}

.odf-detail-workspace .odf-fiber-card{margin-bottom:12px}.odf-detail-workspace .odf-fiber-card:last-child{margin-bottom:0}

.odf-detail-workspace .odf-fiber-identity{height:30px;min-height:30px;max-height:30px;overflow:hidden}.odf-detail-workspace .odf-fiber-identity>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.odf-detail-workspace .odf-repeat-panel-heading{height:59px;min-height:59px;margin-top:12px;width:245px;box-sizing:border-box;border:1px solid #617480;background:#edf1f4;display:flex;align-items:center;padding:6px;font-size:11px;color:#304a59}.odf-detail-workspace .odf-port-table .odf-repeat-heading th{height:59px!important;min-height:59px;box-sizing:border-box;padding:4px 6px;background:#edf2f5;border:1px solid #c9d5dd;font-size:11px;white-space:nowrap;vertical-align:middle}.odf-detail-workspace .odf-port-table .odf-repeat-heading th:last-child{display:none!important}

.odf-detail-workspace .odf-repeat-panel-heading{height:58px;min-height:58px;margin-top:13px;border-color:#617480;font-weight:500}.odf-detail-workspace .odf-port-table .odf-repeat-heading th{height:58px!important;min-height:58px;font-weight:700}

.odf-detail-workspace .odf-repeat-header-band{position:absolute;left:0;right:0;height:58px;box-sizing:border-box;background:#edf2f5;border-top:1px solid #617480;border-bottom:1px solid #617480;z-index:-1;pointer-events:none}

.odf-fiber-order{position:absolute;right:4px;top:4px;z-index:4;display:flex;gap:3px}.odf-fiber-order button{display:grid;place-items:center;width:19px;height:21px;padding:0;border:1px solid #bdced9;border-radius:3px;background:#fff;color:#3f6980;font-size:14px;line-height:1;cursor:pointer}.odf-fiber-order button:disabled{opacity:.3;cursor:default}.odf-fiber-order button:hover:not(:disabled){background:#e2eff6}.odf-detail-workspace .odf-fiber-identity>span:last-child{padding-right:48px}.odf-detail-workspace .odf-join-fibers .odf-fiber-order{pointer-events:auto}@media print{.odf-fiber-order{display:none!important}}

.odf-detail-workspace .odf-target>i:after{display:none}.odf-detail-workspace .odf-core.odf-connected>i{visibility:hidden}.odf-connectivity .odf-pigtail-plug .odf-pigtail-tail{border-radius:1px}.odf-connectivity .odf-join-wire{stroke-linecap:round}

.odf-connectivity .odf-pigtail-plug:not(.odf-front-patch) .odf-pigtail-tail{right:-60px;width:46px}

.odf-detail-workspace .odf-target{justify-content:center;padding-left:0;padding-right:0;gap:0}.odf-connectivity .odf-target .odf-adapter-3d{margin-left:0;margin-right:0;flex:0 0 58px}

.odf-connectivity .odf-front-patch .odf-pigtail-tail{right:-56px;width:42px;height:3px;top:7px;background:#f0bd32;border-radius:2px}.odf-connectivity .odf-front-patch .odf-pigtail-boot{height:9px;top:4px}

/* Keep the optical strand and its joints on one smooth, consistent centerline. */
.odf-connectivity .odf-pigtail-plug:not(.odf-front-patch){top:50%;transform:translateY(-50%)}.odf-connectivity .odf-adapter-3d .odf-front-patch{top:50%;transform:translateY(-50%) rotate(180deg)}.odf-connectivity .odf-pigtail-plug .odf-pigtail-tail{top:50%;height:2px;transform:translateY(-50%);border-radius:1px}.odf-detail-workspace .odf-core>i:after{height:2px;border-radius:1px}.odf-connectivity .odf-join-wire,.odf-connectivity .odf-join-link:hover .odf-join-wire,.odf-connectivity .odf-join-link.selected-link .odf-join-wire{stroke-width:2;stroke-linecap:round;stroke-linejoin:round;shape-rendering:geometricPrecision}.odf-connectivity .odf-join-lines{shape-rendering:geometricPrecision}

.odf-connectivity .odf-pigtail-plug:not(.odf-front-patch) .odf-pigtail-tail{height:2px!important;min-height:0!important;max-height:2px!important;border:0!important;box-shadow:none!important;box-sizing:border-box;top:50%;transform:translateY(-50%)}.odf-detail-workspace .odf-core>i:after{height:2px!important;min-height:0;border:0;box-sizing:border-box}

.odf-connectivity .odf-target.odf-connected .odf-pigtail-plug:not(.odf-front-patch) .odf-pigtail-tail{opacity:0}.odf-connectivity .odf-join-wire{stroke-width:2;stroke-linecap:round;stroke-linejoin:round;shape-rendering:geometricPrecision}

.odf-detail-workspace .odf-join-lines{z-index:3}

.odf-connectivity .odf-join-wire,.odf-connectivity .odf-join-link:hover .odf-join-wire,.odf-connectivity .odf-join-link.selected-link .odf-join-wire,.odf-image-snapshot .odf-join-wire{stroke-width:1!important}.odf-connectivity .odf-pigtail-plug:not(.odf-front-patch) .odf-pigtail-tail,.odf-detail-workspace .odf-core>i:after{height:1px!important;max-height:1px!important}

/* All free and connected optical leads use the same SVG stroke. */
.odf-connectivity .odf-pigtail-plug:not(.odf-front-patch) .odf-pigtail-tail{opacity:0}.odf-detail-workspace .odf-core>i:after{display:none}.odf-connectivity .odf-free-lead,.odf-connectivity .odf-join-wire,.odf-connectivity .odf-join-link:hover .odf-join-wire,.odf-connectivity .odf-join-link.selected-link .odf-join-wire{fill:none;stroke-width:1!important;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;shape-rendering:geometricPrecision}.odf-free-lead{pointer-events:none}

.odf-connectivity .odf-free-lead,.odf-connectivity .odf-join-wire,.odf-connectivity .odf-join-link:hover .odf-join-wire,.odf-connectivity .odf-join-link.selected-link .odf-join-wire{stroke-width:1.5!important}

.odf-detail-workspace .odf-port-table{margin-left:0;width:100%}.odf-detail-workspace .odf-port-table th:first-child{width:94px}.odf-detail-workspace .odf-port-table td.odf-customer-port-cell{padding-left:36px}.odf-customer-port-cell{position:relative;overflow:visible}.odf-customer-fiber-name{position:absolute;left:0;top:0;width:30px;box-sizing:border-box;border:1px solid #617480;background:#edf2f5;color:#405c6d;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;z-index:2;overflow:hidden}.odf-customer-fiber-name>span{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-height:100%;padding:5px 0}


.tree-icon.cable-layer-line{display:inline-block;width:22px;min-width:22px;height:0;border-top:4px solid currentColor;vertical-align:middle}.tree-icon.cable-layer-line-distribution,.tree-icon.cable-layer-line-drop{border-top-style:dashed}

.tree-icon.cable-layer-line{height:8px;border:0;line-height:0}.tree-icon.cable-layer-line svg{display:block;overflow:visible}

#layerTree .tree-heading>.layer-menu-toggle,#layerTree .tree-row>.layer-menu-toggle{box-sizing:border-box;display:flex;align-items:center;justify-content:center;flex:0 0 28px;width:28px;height:28px;padding:0;margin-right:0}#layerTree .layer-menu-toggle svg{display:block;flex:none}

.cable-layer-settings{width:min(440px,92vw);border:1px solid #bacbd6;border-radius:10px;padding:22px;color:#304a59}.cable-layer-settings::backdrop{background:#102b3b70}.cable-settings-heading,.cable-settings-actions{display:flex;justify-content:space-between;align-items:center;gap:12px}.cable-settings-heading h2{font-size:17px}.cable-layer-settings label{display:grid;grid-template-columns:1fr 130px;align-items:center;gap:12px;margin:12px 0}.cable-layer-settings input,.cable-layer-settings select{width:100%;box-sizing:border-box}.cable-settings-features{max-height:240px;overflow:auto}.cable-settings-features button{display:flex;justify-content:space-between;width:100%;padding:10px;border:1px solid #dae3e8;background:#f6f9fb;gap:10px;text-align:left}.cable-settings-features span{font-size:11px;color:#71828b}.cable-settings-error{color:#b52929}

#layerTree .tree-row>.layer-menu-toggle{margin-left:auto}#layerTree .tree-heading>.layer-menu-toggle{margin-left:auto}

#layerTree .tree-heading input[type="checkbox"],#layerTree .tree-row input[type="checkbox"]{width:15px;height:15px;min-width:15px;flex:0 0 15px;margin:0;cursor:pointer}

#layerTree .tree-heading input[type="checkbox"],#layerTree .tree-row input[type="checkbox"]{appearance:none;-webkit-appearance:none;border:1px solid #8b9da8;border-radius:3px;background:#fff;display:inline-block;vertical-align:middle}#layerTree .tree-heading input[type="checkbox"]:checked,#layerTree .tree-row input[type="checkbox"]:checked{border-color:#247e9c;background-color:#247e9c;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='m4 8 2.6 2.6L12 5' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-size:13px 13px;background-position:center;background-repeat:no-repeat}#layerTree input[type="checkbox"]:focus-visible{outline:2px solid #247e9c;outline-offset:2px}

#layerTree>.custom-layer-group>.tree-row{min-height:30px;padding-left:0;font-size:11px}#layerTree>.custom-layer-group{margin-top:5px}

#layerDialog{width:min(460px,94vw);border:1px solid #c7d6df;border-radius:12px;padding:24px;color:#304a59}#layerDialog::backdrop{background:#17354b70}.layer-setup-intro{font-size:12px;color:#6b7e8b;margin:0 0 14px}.layer-presets{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}.layer-presets button{background:#edf4f8;border:1px solid #d7e3eb;border-radius:15px;padding:6px 10px;font-size:11px;color:#436478}.layer-color-presets{display:flex;gap:9px;margin:8px 0 18px}.layer-color-presets button{width:23px;height:23px;padding:0;border:2px solid #fff;border-radius:50%;outline:1px solid #d9e1e6}.layer-setup-preview{display:flex;align-items:center;gap:10px;padding:13px;border:1px solid #d6e2e9;border-radius:7px;background:#f6f9fb;margin:14px 0}.layer-setup-preview small{margin-left:auto;font-size:10px;color:#788c99}.layer-preview-symbol{font-size:23px}#layerDialog #layerNote{font-size:11px;line-height:1.5;color:#738794}

.network-point-coordinates{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.network-point-coordinates .field{min-width:0}.network-point-coordinates input{width:100%;box-sizing:border-box}

#layerTree>.custom-layer-group{margin-top:0}#layerTree>.custom-layer-group>.main-custom-layer-row{display:flex;align-items:center;gap:6px;min-height:34px;padding:3px 0;box-sizing:border-box;border-bottom:0;font-size:11px}.main-layer-indent{width:14px;flex:0 0 14px}#layerTree .main-custom-layer-row .tree-icon{display:none}#layerTree .main-custom-layer-row>span:not(.main-layer-indent):not(.tree-icon){flex:1}#layerTree .main-custom-layer-row>.layer-menu-toggle{margin-left:auto;flex:0 0 28px;width:28px;padding:0;font-size:20px}

#layerTree>.custom-layer-group{padding-left:0;margin-left:0}#layerTree>.custom-layer-group>.main-custom-layer-row{margin-left:0;padding-left:0;min-height:28px;gap:6px}#layerTree>.tree-group>.tree-children{padding-left:38px}#layerTree .tree-children>.tree-row,#layerTree .custom-cable-categories>.tree-row{min-height:25px;gap:5px}#layerTree .tree-children .layer-menu-toggle{height:25px}#layerTree .main-layer-indent{width:10px;flex-basis:10px}

#layerTree .tree-row:has(>.custom-sub-layers){flex-wrap:wrap}.custom-sub-layers{flex:0 0 calc(100% - 38px);margin-left:38px}.custom-sub-layers .tree-row{font-size:10px;gap:5px}.add-custom-sublayer{font-size:9px!important;white-space:nowrap}

#layerTree .custom-layer-heading{gap:6px;font-size:11px;min-height:30px;border-bottom:0}#layerTree .custom-layer-heading>.tree-icon{display:none}#layerTree .custom-layer-collapse{flex:0 0 14px;width:14px;padding:0 2px;background:none;border:0;font-size:10px;color:#4a5960}#layerTree .custom-layer-heading>.layer-menu-toggle{display:flex;align-items:center;justify-content:center;margin-left:auto;width:28px;flex:0 0 28px;padding:0}.custom-sub-layers[hidden]{display:none!important}

.join-core-row.splitter-linked-core .join-core-tip:before,.join-core-row.splitter-linked-core .join-core-tip:after{display:none}.splitter-link-line{stroke-linecap:round;stroke-linejoin:round}

.splitter-continuous-port>i{opacity:0!important}.splitter-link-overlay .splitter-link-line{stroke-linecap:round;stroke-linejoin:round}

.join-box-dialog .join-core-row,.join-box-dialog .join-core-row>span,.join-box-dialog .join-core-tip,.join-box-dialog .splitter-port-button,.join-box-dialog .splitter-link-hit,.join-box-dialog .splitter-link-line,.join-box-dialog .join-connection-line{cursor:default!important}.join-box-dialog .join-core-row:hover{outline:1px solid #658b9d;outline-offset:-1px}.join-box-dialog .splitter-port-button:hover{outline:1px solid #658b9d;outline-offset:1px}

.join-box-dialog .join-core-row,.join-box-dialog .join-core-row>span,.join-box-dialog .join-core-tip,.join-box-dialog .splitter-port-button,.join-box-dialog .splitter-link-hit,.join-box-dialog .splitter-link-line,.join-box-dialog .join-connection-hit,.join-box-dialog .join-connection-line{cursor:pointer!important}

.joinbox-splitter-panel .join-splitter-card{overflow:visible}.joinbox-splitter-panel .join-splitter-card>header{position:relative;z-index:2;box-sizing:border-box;border-top:1px solid #c6d0d7}

.joinbox-splitter-panel .splitter-device>.splitter-body{margin-top:-10px;margin-bottom:-10px;align-self:stretch}.joinbox-splitter-panel .join-splitter-card>header{padding-top:5px;padding-bottom:5px;line-height:16px}.joinbox-splitter-panel .join-splitter-card>header>span{padding-top:2px;padding-bottom:2px}

.joinbox-splitter-panel .join-splitter-card .splitter-device{padding-bottom:20px}

.joinbox-splitter-panel .join-splitter-card{position:relative;border-color:transparent;border-radius:0;box-shadow:none}.joinbox-splitter-panel .join-splitter-card:after{content:"";position:absolute;left:-1px;right:-1px;top:var(--splitter-header-rise,0px);bottom:-1px;border:1px solid #aebfc9;border-radius:5px;pointer-events:none;z-index:5}.joinbox-splitter-panel .join-splitter-card>header{border-top:0;border-radius:4px 4px 0 0}

.join-box-dialog .joinbox-scroll,.join-box-dialog .joinbox-workspace,.join-box-dialog .join-diagram-scroll{overflow-anchor:none}.join-box-dialog .splitter-port-button{box-sizing:border-box}

/* Keep the outer editor steady while the common canvas updates. */
.join-box-dialog[open]{box-sizing:border-box;width:min(1500px,96vw);max-width:96vw;height:90vh;max-height:90vh;overflow:hidden;margin:auto}.join-box-dialog>.dialoghead,.join-box-dialog>.joinbox-actions,.join-box-dialog>.joinbox-edit-tools{flex-shrink:0}.join-box-dialog>.joinbox-scroll{min-height:0;min-width:0;scrollbar-gutter:stable;overscroll-behavior:contain;overflow-anchor:none}.join-box-dialog .joinbox-status,.join-box-dialog .joinbox-error{min-height:16px;line-height:16px}

.join-box-dialog .joinbox-actions .joinbox-status{display:inline-block;margin:0;min-height:16px;min-width:100px;line-height:16px;font-size:11px;color:#8a6925;white-space:nowrap;flex:0 0 100px;order:11}.join-box-dialog .joinbox-actions .joinbox-status:empty{visibility:hidden}

.join-box-dialog>.dialoghead>.joinbox-status{margin:0 10px 0 auto;min-width:100px;min-height:16px;line-height:16px;text-align:right;font-size:11px;color:#8a6925;white-space:nowrap}.join-box-dialog>.dialoghead>.joinbox-status:empty{visibility:hidden}.join-box-dialog>.dialoghead>.joinbox-close{flex-shrink:0}

.join-box-dialog>.dialoghead{display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:nowrap}.joinbox-close-group{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}.join-box-dialog .joinbox-close-group>.joinbox-status{display:inline-block;margin:0;min-height:16px;line-height:16px;font-size:11px;color:#8a6925;white-space:nowrap}.join-box-dialog .joinbox-close-group>.joinbox-status:empty{visibility:hidden;min-width:100px}.join-box-dialog .joinbox-close-group>.joinbox-close{position:static!important;margin:0!important;transform:none!important;flex-shrink:0}

.join-box-dialog .joinbox-close-group{height:30px;align-items:center}.join-box-dialog .joinbox-close-group>.joinbox-status{height:30px;min-height:30px;display:flex;align-items:center;line-height:normal;padding:0}.join-box-dialog .joinbox-close-group>.joinbox-close{display:flex!important;align-items:center;justify-content:center;width:30px;height:30px;min-height:30px;padding:0!important;line-height:1!important;box-sizing:border-box}

.join-box-dialog>.dialoghead{position:relative;justify-content:center;min-height:58px;box-sizing:border-box;padding-left:190px;padding-right:190px}.join-box-dialog>.dialoghead>div:first-child{margin:0 auto;text-align:center}.join-box-dialog>.dialoghead>.joinbox-close-group{position:absolute;right:20px;top:50%;transform:translateY(-50%);margin:0}

.join-box-dialog .joinbox-close-group{gap:20px}

#mapEditLock{height:30px;padding:4px 10px;border:1px solid #c8d8df;border-radius:5px;background:#f1f6f8;color:#426171;font-size:11px;white-space:nowrap}#mapEditLock[aria-pressed="false"]{background:#eaf5ef;color:#27724b;border-color:#b4d7c3}.map-edit-locked #draw,.map-edit-locked #toolAdd,.map-edit-locked #addAsset,.map-edit-locked #addRoute,.map-edit-locked #featureUndo,.map-edit-locked #featureRedo{pointer-events:none;opacity:.4}

#mapEditLock{position:relative;width:100px;height:32px;box-sizing:border-box;border:1px solid #ce7478;border-radius:18px;background:#c94f58;color:#fff;padding:0 10px 0 35px;overflow:hidden;transition:background .18s,border-color .18s}#mapEditLock .map-lock-label{font-size:10px;font-weight:600;line-height:30px}#mapEditLock .map-lock-thumb{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff;box-shadow:0 1px 3px #0003;font-size:12px;transition:transform .18s}#mapEditLock[aria-checked="true"]{background:#2f9563;border-color:#278456;color:white;padding-left:9px;padding-right:32px}#mapEditLock[aria-checked="true"] .map-lock-thumb{transform:translateX(67px)}#mapEditLock:focus-visible{outline:2px solid #3d7c9f;outline-offset:3px}@media(prefers-reduced-motion:reduce){#mapEditLock,#mapEditLock .map-lock-thumb{transition:none}}

#mapEditLock{width:82px;height:26px;padding-left:27px;padding-right:6px}#mapEditLock .map-lock-label{font-size:9px;line-height:24px}#mapEditLock .map-lock-thumb{top:3px;left:3px;width:18px;height:18px;font-size:10px}#mapEditLock[aria-checked="true"]{padding-left:6px;padding-right:24px}#mapEditLock[aria-checked="true"] .map-lock-thumb{transform:translateX(56px)}

#mapEditLock{width:48px;height:25px;padding:0;background:#f7dadd;border-color:#e8b2b8;box-shadow:inset 0 1px 2px #72232d12}#mapEditLock .map-lock-label{display:none}#mapEditLock .map-lock-thumb{width:19px;height:19px;top:2px;left:2px;font-size:10px;box-shadow:0 1px 3px #60313a30}#mapEditLock[aria-checked="true"]{background:#d5efdf;border-color:#9dcfb2;padding:0;box-shadow:inset 0 1px 2px #205f3812}#mapEditLock[aria-checked="true"] .map-lock-thumb{transform:translateX(23px)}

#mapEditLock{width:52px;height:26px;background:#fff;border:1px solid #ce727c;box-shadow:none;border-radius:7px}#mapEditLock .map-lock-thumb{width:20px;height:20px;left:2px;top:2px;background:#c94f5d;border-radius:5px;box-shadow:none;font-size:11px}#mapEditLock[aria-checked="true"]{background:#fff;border-color:#54a779;box-shadow:none}#mapEditLock[aria-checked="true"] .map-lock-thumb{background:#3b9967;transform:translateX(25px)}

.odf-fiber-order .odf-detach-fiber{color:#a05d40}.odf-detail-workspace .odf-fiber-identity>span:last-child{padding-right:72px}

.layer-create-tabs{display:flex;gap:4px;background:#edf2f5;padding:4px;border-radius:7px;margin:0 0 16px}.layer-create-tabs button{flex:1;padding:8px;border:0;background:transparent;color:#677d8c;border-radius:5px;font-size:12px}.layer-create-tabs button[aria-selected="true"]{background:#fff;color:#246b7c;box-shadow:0 1px 3px #294c611a;font-weight:600}

#layerTree .custom-layer-node{margin:0;padding:0;border:0}#layerTree .custom-layer-node>.custom-layer-heading{display:flex;align-items:center;flex-wrap:nowrap;gap:6px;padding:3px 0;min-height:28px;border:0;box-sizing:border-box}#layerTree .custom-layer-node>.custom-layer-heading .custom-layer-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#layerTree .custom-layer-node>.custom-layer-heading .layer-menu-toggle{margin-left:auto;flex:0 0 28px;height:25px;padding:0}#layerTree .custom-layer-children{padding-left:38px;margin:0}#layerTree .custom-layer-node .custom-layer-collapse{width:14px;flex:0 0 14px;padding:0;border:0;background:none;font-size:10px}#layerTree .custom-layer-root>.custom-layer-heading{font-size:11px}#layerTree .custom-layer-children>.custom-layer-node>.custom-layer-heading{font-size:10px;gap:5px;min-height:25px}#layerTree .custom-layer-children[hidden]{display:none!important}

#layerTree>.tree-group{padding:0;border-bottom:0;margin:0}#layerTree .tree-children .tree-row{border-bottom:0}#layerTree>.tree-group>.tree-heading{display:grid;grid-template-columns:14px 15px minmax(0,1fr) 28px;gap:6px;align-items:center;min-height:30px;padding:3px 0;box-sizing:border-box}#layerTree .tree-children .tree-row.custom-layer-heading,#layerTree .tree-children>.tree-row{display:grid;grid-template-columns:15px 22px minmax(0,1fr) 28px;gap:5px;align-items:center;min-height:25px;padding:0;box-sizing:border-box}#layerTree .custom-layer-heading .custom-layer-swatch{display:flex!important;align-items:center;width:22px;font-size:14px}#layerTree .custom-layer-heading .custom-layer-name{min-width:0}#layerTree .custom-layer-node>.custom-layer-heading .layer-menu-toggle{margin:0}#layerTree .tree-children .custom-layer-heading>.custom-layer-collapse{display:none!important}

#layerTree .cable-layer-line svg,#layerTree .custom-layer-swatch svg{width:18px;height:8px}#layerTree .cable-layer-line,#layerTree .custom-layer-swatch{justify-content:center}


#layerTree .tree-icon.cable-layer-line{display:flex;align-items:center;justify-content:center;height:10px;border:0}#layerTree .cable-layer-line svg{display:block;width:18px;height:8px;overflow:visible}

.software-update-heading{margin:4px 0 12px}.software-update-heading small{font-size:9px;letter-spacing:1.3px;color:#738a97}.software-update-heading h3{font-size:18px;color:#304f61;margin:6px 0}.software-update-steps{display:flex;gap:8px;list-style-position:inside;padding:0;margin:14px 0 18px;counter-reset:update-step}.software-update-steps li{flex:1;padding:10px 7px;border:1px solid #dce6ec;border-radius:6px;background:#f4f8fa;font-size:10px;color:#526f80}.source-backup-dialog .software-check{border-radius:6px}.source-backup-dialog .software-result:not(:empty){padding:12px;background:#edf7f1;border:1px solid #cee6d7;border-radius:6px;color:#2d6f49}

.source-backup-dialog #softwareBackup>p,.source-backup-dialog #softwareRestore>p{font-size:12px;line-height:1.65;color:#627b8a}.source-backup-dialog .backup-includes{display:flex;flex-direction:column;gap:8px;padding:16px;background:#f4f8fa;border:1px solid #dbe6ec;border-radius:8px;margin:18px 0}.source-backup-dialog .backup-includes strong{font-size:12px;color:#345467}.source-backup-dialog .backup-includes span{font-size:11px;color:#6b8493;line-height:1.7}.source-backup-dialog .backup-settings-option{display:flex;align-items:center;gap:8px;font-size:12px;padding:10px 0}.source-backup-dialog .backup-note{padding:11px 13px;border-left:3px solid #8cabbc;background:#f5f8fa;border-radius:0 5px 5px 0;font-size:11px!important;line-height:1.65}.source-backup-dialog .backup-download{margin-top:12px;padding:10px 18px;border-radius:6px}.source-backup-dialog .software-tabs{gap:5px;padding:4px;background:#edf3f6;border-radius:8px}.source-backup-dialog .software-tabs button{flex:1;border:0;border-radius:5px;padding:10px 14px}.source-backup-dialog .software-tabs button[aria-selected="true"]{background:#fff;box-shadow:0 1px 4px #31526718;color:#236c7d}

.trace-form-help{font-size:11px;line-height:1.6;color:#738895;margin:0 0 12px}.fiber-trace-only #traceForm{padding:12px;background:#f7fafb;border:1px solid #dce7ec;border-radius:8px}.fiber-trace-only #traceForm .primary{width:100%;border-radius:6px}.fiber-trace-only #traceForm select,.fiber-trace-only #traceForm input{min-height:34px;border-radius:5px}.fiber-trace-only .trace-device strong{font-weight:600}.fiber-trace-only .trace-fiber-info{border:1px solid #dbe6ec;border-radius:7px;background:#fff;padding:10px}.fiber-trace-only .trace-path-graph{scroll-behavior:smooth}

.trace-network-card{padding:14px;border:1px solid #d7e3e9;border-radius:7px;background:#fff;margin:10px 0}.trace-network-card h4{margin:0 0 10px;color:#386477}.trace-network-card p{font-size:11px}.trace-network-card small{display:block;color:#78909d;margin-top:3px}.trace-network-card>strong{display:block;text-align:right;border-top:1px solid #e4ecf0;padding-top:10px;font-size:12px}

#operationsPanel.fiber-trace-only{max-height:none;border-radius:0;overflow:auto;padding:18px 22px;box-shadow:none}#operationsPanel.fiber-trace-only #traceResult{margin-top:20px;min-height:160px}#operationsPanel.fiber-trace-only .trace-path-graph{overflow-x:auto;padding:24px 12px}.trace-side-panel{display:none!important}
.fiber-trace-sidebar{display:none!important}

.trace-bundle-summary{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px;background:#f3f8fa;border:1px solid #d6e5ec;border-radius:8px}.trace-bundle-summary h3{margin:5px 0;color:#345d70}.trace-bundle-summary small{font-size:10px;color:#78909e}.trace-bundle-summary strong{display:block;font-size:23px;color:#2e7081}.trace-bundle-summary p{font-size:11px;color:#6d8492}.trace-all-cores{display:flex;flex-direction:column;gap:12px}.trace-core-track{border:1px solid #dce6eb;border-radius:7px;background:#fff;overflow:hidden}.trace-core-track>header{display:flex;gap:16px;padding:10px 14px;background:#f5f8fa;font-size:12px}.trace-core-track>header span{font-size:11px;color:#728591}.trace-core-track.trace-core-unjoined{border-color:#dcaa83}.trace-core-unjoined>header{background:#fff3e8}.trace-open-stop{color:#a45d29;font-size:12px;padding:0 14px 10px}.trace-core-track .trace-path-graph{margin:0!important;padding:12px!important}

#traceForm [hidden]{display:none!important}#traceForm .trace-fields{display:none!important}

.trace-core-diagram{overflow-x:auto;padding:5px 12px;background:#fff}.trace-core-diagram svg{display:block;max-width:none}.trace-core-track>header b{min-width:55px}

.trace-all-cores{gap:0;border:1px solid #d7e3e9;border-radius:7px;overflow:hidden}.trace-all-cores .trace-core-track{display:grid;grid-template-columns:155px minmax(0,1fr);border:0;border-bottom:1px solid #e1e9ed;border-radius:0;overflow:visible}.trace-all-cores .trace-core-track:last-child{border-bottom:0}.trace-all-cores .trace-core-track>header{display:flex;flex-direction:column;gap:5px;justify-content:center;padding:10px 12px;border-right:1px solid #e1e9ed}.trace-all-cores .trace-core-track>header span{font-size:10px;line-height:1.4}.trace-all-cores .trace-core-diagram{padding:0 8px}.trace-all-cores .trace-open-stop{display:none}@media(max-width:650px){.trace-all-cores .trace-core-track{grid-template-columns:110px minmax(0,1fr)}}

.trace-core-bundle{overflow-x:auto;border:1px solid #dce6eb;border-radius:6px;background:white;padding:10px}.trace-core-bundle svg{display:block;max-width:none}.trace-core-bundle path{vector-effect:non-scaling-stroke}.trace-core-bundle path:hover{stroke-width:2}

.trace-core-assignments{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:5px 14px;padding:10px 0}.trace-core-assignments>div{display:flex;align-items:center;gap:6px;font-size:11px;color:#4d6878}.trace-core-assignments i{width:18px;height:2px;flex-shrink:0}.trace-core-assignments small{color:#8599a5}

.patch-designer[open]{position:fixed;top:var(--odf-top,42px);bottom:0;left:0;right:0;margin:0;width:100vw;max-width:100vw;height:calc(100dvh - var(--odf-top,42px));max-height:calc(100dvh - var(--odf-top,42px));box-sizing:border-box;border-radius:0;z-index:1000;overflow:auto}

.patch-designer[open]{left:var(--odf-left,48px);width:calc(100vw - var(--odf-left,48px));max-width:calc(100vw - var(--odf-left,48px));right:0}

.patch-designer[open]{width:var(--odf-width,calc(100vw - var(--odf-left,48px)));max-width:var(--odf-width,calc(100vw - var(--odf-left,48px)));height:var(--odf-height,calc(100dvh - var(--odf-top,42px)));max-height:var(--odf-height,calc(100dvh - var(--odf-top,42px)));right:auto;bottom:auto}

.join-box-dialog[open]{position:fixed;top:var(--join-frame-top,42px);left:var(--join-frame-left,48px);width:var(--join-frame-width,calc(100vw - 48px));max-width:var(--join-frame-width,calc(100vw - 48px));height:var(--join-frame-height,calc(100dvh - 42px));max-height:var(--join-frame-height,calc(100dvh - 42px));right:auto;bottom:auto;margin:0;border-radius:0;z-index:1000;box-sizing:border-box;overflow:hidden}

.join-box-dialog[open],.join-box-dialog[open]:has(.joinbox-splitter-panel:not([hidden])){position:fixed;inset:auto;top:var(--join-frame-top,42px);left:var(--join-frame-left,48px);width:var(--join-frame-width,calc(100vw - 48px));max-width:var(--join-frame-width,calc(100vw - 48px));height:var(--join-frame-height,calc(100dvh - 42px));max-height:var(--join-frame-height,calc(100dvh - 42px));margin:0;right:auto;bottom:auto;overflow:hidden}

#operationsPanel.fiber-trace-only{padding:12px 16px}#operationsPanel.fiber-trace-only .ops-heading{margin-bottom:8px}#operationsPanel.fiber-trace-only #traceForm{padding:9px 12px;gap:8px}#operationsPanel.fiber-trace-only .trace-form-help{flex-basis:100%;margin:0 0 3px;font-size:10px;line-height:1.4}#operationsPanel.fiber-trace-only #traceForm label{font-size:11px}#operationsPanel.fiber-trace-only #traceResult{margin-top:10px}#operationsPanel.fiber-trace-only .trace-bundle-summary{padding:10px 13px;gap:14px}#operationsPanel.fiber-trace-only .trace-bundle-summary h3{font-size:15px;margin:3px 0}#operationsPanel.fiber-trace-only .trace-bundle-summary p{margin:4px 0;font-size:10px;line-height:1.4}#operationsPanel.fiber-trace-only .trace-bundle-summary strong{font-size:20px}#operationsPanel.fiber-trace-only #traceResult>.ops-muted{margin:7px 0;font-size:10px;line-height:1.45}#operationsPanel.fiber-trace-only #traceResult>.trace-path-graph{padding:12px 8px;margin:6px 0}#operationsPanel.fiber-trace-only #traceResult>h3{font-size:13px;margin:10px 0 6px}#operationsPanel.fiber-trace-only .trace-core-bundle{padding:5px 8px}

#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device:not(.trace-has-pole):before,#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device:not(.trace-has-pole):after{display:none}

#operationsPanel.fiber-trace-only .trace-core-edge>.trace-segment-length{position:absolute;top:-24px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:11px;font-weight:600;color:#476574;background:#fff;padding:2px 5px;border-radius:3px}#operationsPanel.fiber-trace-only #traceResult>.trace-path-graph{padding-top:34px}

#operationsPanel.fiber-trace-only .trace-fiber-info{border:0;background:transparent;box-shadow:none;border-radius:0;padding:0;margin-top:5px}#operationsPanel.fiber-trace-only .trace-core-edge:has(.trace-cable-roll) .trace-fiber-info{margin-top:5px}#operationsPanel.fiber-trace-only .trace-fiber-info>strong{font-size:11px;font-weight:500;color:#4b6878}

#operationsPanel.fiber-trace-only .trace-core-edge>.trace-segment-length{top:-18px;padding:0 3px;line-height:14px}#operationsPanel.fiber-trace-only .trace-core-edge .trace-fiber-info,#operationsPanel.fiber-trace-only .trace-core-edge:has(.trace-cable-roll) .trace-fiber-info{margin-top:2px;padding:0;line-height:14px}

#operationsPanel.fiber-trace-only .trace-core-edge>.trace-segment-length{left:calc(50% - 34px)}#operationsPanel.fiber-trace-only .trace-core-edge .trace-fiber-info{transform:translateX(-34px)}

#operationsPanel.fiber-trace-only .trace-core-edge>.trace-segment-length{top:-11px;font-size:10px;line-height:12px;background:transparent}#operationsPanel.fiber-trace-only .trace-core-edge .trace-fiber-info,#operationsPanel.fiber-trace-only .trace-core-edge:has(.trace-cable-roll) .trace-fiber-info{margin-top:1px;line-height:12px}#operationsPanel.fiber-trace-only .trace-fiber-info>strong{line-height:12px;font-size:10px}

/* Trial view: keep fiber and rolls; retain pole design in the saved source backup. */
#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device:before,#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device:after{display:none!important}

#operationsPanel.fiber-trace-only .trace-node-roll svg,#operationsPanel.fiber-trace-only .trace-cable-roll svg{width:22px;height:22px;filter:none;transform:none}#operationsPanel.fiber-trace-only .trace-node-roll svg *,#operationsPanel.fiber-trace-only .trace-cable-roll svg *{stroke:currentColor;fill:none}#operationsPanel.fiber-trace-only .trace-device-icon.trace-joint{background:transparent;border:0;box-shadow:none}#operationsPanel.fiber-trace-only .trace-device-icon.trace-joint svg{width:24px;height:24px}

#operationsPanel.fiber-trace-only .trace-node-roll{left:calc(50% + 7px);top:1px;width:22px;margin:0;transform:none}#operationsPanel.fiber-trace-only .trace-node-roll small{position:absolute;top:24px;left:50%;transform:translateX(-50%);margin:0}

#operationsPanel.fiber-trace-only .trace-map-symbols{display:flex;align-items:center;justify-content:center;gap:5px;height:24px;position:relative}#operationsPanel.fiber-trace-only .trace-map-symbols .trace-device-icon{flex:0 0 24px;margin:0}#operationsPanel.fiber-trace-only .trace-map-symbols .trace-node-roll{position:static;left:auto;top:auto;transform:none;width:24px;height:24px;flex:0 0 24px;display:flex;align-items:center;justify-content:center}#operationsPanel.fiber-trace-only .trace-map-symbols .trace-node-roll svg{width:24px;height:24px}#operationsPanel.fiber-trace-only .trace-map-symbols .trace-node-roll small{display:none}#operationsPanel.fiber-trace-only .trace-core-line{background:var(--trace-cable-color,#278cac);color:var(--trace-cable-color,#278cac)}#operationsPanel.fiber-trace-only .trace-core-line:after{border-left-color:var(--trace-cable-color,#278cac)}

#operationsPanel.fiber-trace-only .trace-path-graph{align-items:flex-start}#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device{padding:0;box-sizing:border-box;display:flex;flex-direction:column;align-items:center}#operationsPanel.fiber-trace-only .trace-map-symbols{height:24px;transform:translateY(-5px);margin-bottom:-5px;z-index:4}#operationsPanel.fiber-trace-only .trace-core-edge{padding-top:5px}

#operationsPanel.fiber-trace-only .trace-map-symbols{width:24px;height:24px;gap:0;position:relative;flex-shrink:0}#operationsPanel.fiber-trace-only .trace-map-symbols .trace-device-icon.trace-joint{position:relative;z-index:2;width:24px;height:24px;flex:0 0 24px}#operationsPanel.fiber-trace-only .trace-map-symbols .trace-node-roll{position:absolute;inset:0;left:0;top:0;width:24px;height:24px;margin:0;transform:none;z-index:3;pointer-events:none}#operationsPanel.fiber-trace-only .trace-map-symbols .trace-node-roll svg{width:24px;height:24px}

#operationsPanel.fiber-trace-only .trace-path-graph>.trace-device{z-index:5}#operationsPanel.fiber-trace-only .trace-path-graph>.trace-core-edge{z-index:1}#operationsPanel.fiber-trace-only .trace-map-symbols .trace-node-roll{z-index:2}#operationsPanel.fiber-trace-only .trace-map-symbols .trace-device-icon.trace-joint{z-index:4}#operationsPanel.fiber-trace-only .trace-map-symbols .trace-device-icon.trace-joint svg{position:relative;z-index:4}

.join-box-dialog .join-fiber-title{position:relative;padding-right:27px!important}.join-box-dialog .join-fiber-flip{position:absolute;right:2px;top:2px;width:20px;height:19px;min-height:0;padding:0;border:1px solid #b6c6ce;border-radius:3px;background:#fff;color:#294e63;font-size:15px;line-height:16px;cursor:pointer}

.join-box-dialog .join-fiber-title{padding-right:71px!important}.join-box-dialog .join-fiber-flip{right:46px}.join-box-dialog .join-fiber-up,.join-box-dialog .join-fiber-down{position:absolute;top:2px;right:24px;width:20px;height:19px;min-height:0;padding:0;border:1px solid #b6c6ce;border-radius:3px;background:#fff;color:#294e63;font-size:13px;line-height:16px;cursor:pointer}.join-box-dialog .join-fiber-down{right:2px}

.join-box-dialog .join-all-column>.join-fiber-title{color:#172f40;font-weight:400;background:#e5f1f8}

.join-box-dialog .join-all-column>.join-fiber-title{padding-right:6px!important}.join-box-dialog .join-all-column>.join-fiber-id{position:relative;padding-right:68px!important;grid-template-columns:auto minmax(0,1fr) 43px}.join-box-dialog .join-all-column[data-join-reverse="true"]>.join-fiber-id{grid-template-columns:43px auto minmax(0,1fr)}

.join-box-dialog .join-all-column>.join-fiber-id{padding-right:25px!important;overflow:visible}.join-box-dialog .join-fiber-settings{position:absolute;right:2px;top:2px;width:20px;height:19px;min-height:0;padding:0;border:1px solid #b6c6ce;border-radius:3px;background:white;color:#294e63;line-height:16px;cursor:pointer}.join-fiber-settings-menu[hidden]{display:none!important}.join-box-dialog .join-fiber-settings-menu{position:absolute;right:1px;top:23px;z-index:30;display:flex;gap:4px;padding:5px;background:#fff;border:1px solid #b6c6ce;border-radius:4px;box-shadow:0 3px 10px #17344726}.join-box-dialog .join-fiber-settings-menu>button{position:static;width:26px;height:23px;min-height:0;padding:0}

.join-box-dialog .join-all-column>.join-fiber-id{grid-template-columns:auto minmax(0,1fr) 55px!important}.join-box-dialog .join-all-column>.join-fiber-id>span{grid-column:1!important;grid-row:1}.join-box-dialog .join-all-column>.join-fiber-id>strong{grid-column:2!important;grid-row:1}.join-box-dialog .join-all-column>.join-fiber-id>.join-total-cores{grid-column:3!important;grid-row:1;border-left:1px solid #34444d!important;border-right:0!important}

.join-box-dialog .join-fiber-settings{border-color:#c4d4dd;background:#f8fbfd;color:#365e74;border-radius:4px}.join-box-dialog .join-fiber-settings:hover,.join-box-dialog .join-fiber-settings[aria-expanded="true"]{background:#e3f0f7;border-color:#82abc2}.join-box-dialog .join-fiber-settings-menu{min-width:126px;flex-direction:column;gap:3px;padding:5px;border-color:#cfdee7;border-radius:7px;box-shadow:0 5px 18px #17344724}.join-box-dialog .join-fiber-settings-menu>button{display:flex;align-items:center;gap:9px;width:100%;height:29px;padding:4px 9px;border:0;border-radius:4px;background:#fff;color:#294e63;font:400 11px/18px Arial,sans-serif;text-align:left;white-space:nowrap}.join-box-dialog .join-fiber-settings-menu>button>span{display:inline-flex;align-items:center;justify-content:center;width:19px;color:#397693;font-size:17px}.join-box-dialog .join-fiber-settings-menu>button:hover{background:#eaf3f8}.join-box-dialog .join-fiber-settings-menu>button:focus-visible,.join-box-dialog .join-fiber-settings:focus-visible{outline:2px solid #4387ae;outline-offset:1px}

.join-box-dialog .join-fiber-settings-menu{min-width:140px;padding:6px;border-radius:8px;border-color:#d5e2e9;background:#fbfdff;box-shadow:0 6px 20px #193c5124}.join-box-dialog .join-fiber-settings-menu>button{height:32px;gap:10px;padding:5px 10px;border-radius:5px;background:transparent;font-family:inherit;font-size:11px;transition:background .12s,color .12s}.join-box-dialog .join-fiber-settings-menu>button>svg{flex:0 0 16px;color:#527b91}.join-box-dialog .join-fiber-settings-menu>button>.join-action-label{display:block;width:auto;font:inherit;color:inherit}.join-box-dialog .join-fiber-settings-menu>.join-fiber-flip{border-bottom:1px solid #e3ebf0;border-radius:5px 5px 0 0;margin-bottom:2px;height:35px}.join-box-dialog .join-fiber-settings-menu>button:hover{background:#e7f1f8;color:#174e70}.join-box-dialog .join-fiber-settings-menu>button:hover>svg{color:#227ba9}

#attributePanel{z-index:1200}#attributePanel .equipment-browser{min-height:0;overflow:auto}#attributePanel .equipment-layout{min-width:0}

/* Attribute workspace presentation */
#attributePanel{border:1px solid #d9e4eb;border-radius:8px;background:#f7fafc;color:#263e4e;box-shadow:0 8px 30px #193e501c}
#attributePanel .table-head{padding:12px 18px;background:#fff;border-bottom:1px solid #dce7ee;min-height:48px;box-sizing:border-box}
#attributePanel .table-head>b{font-size:14px;font-weight:600;letter-spacing:.15px;color:#254c63}
#attributeRows{background:#f7fafc}
#attributePanel .equipment-layout{height:100%;min-height:100%;box-sizing:border-box}
#attributePanel .equipment-browser{width:218px;box-sizing:border-box;max-height:none;padding:16px 12px;background:#f2f7fa;border-right:1px solid #dce7ee}
#attributePanel .equipment-browser h3{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#718999;margin:0 7px 12px}
#attributePanel #equipmentNewCategory{width:100%;margin-bottom:12px;background:#fff;border:1px dashed #b5ccd9;border-radius:6px;color:#386984;font-size:11px;padding:8px}
#attributePanel .equipment-category-row{border:0;border-radius:6px;margin:3px 0;overflow:hidden}
#attributePanel .equipment-browser [data-category]{padding:10px 9px;border-radius:6px;background:transparent;color:#4c6473;font-size:11px;gap:8px;align-items:center;min-width:0}
#attributePanel .equipment-browser [data-category][aria-pressed=true]{background:#deedf6;color:#205e80;font-weight:600;box-shadow:inset 3px 0 #3d8ab2}
#attributePanel .equipment-browser [data-category]:hover{background:#e8f1f7}
#attributePanel .equipment-browser [data-category]>span{font-size:10px;padding:1px 6px;border-radius:10px;background:#fff;color:#607d8f}
#attributePanel .equipment-content{background:white;overflow:hidden}
#attributePanel .equipment-controls{padding:14px 16px;gap:10px;background:#fbfdfe;border-bottom:1px solid #e6edf2}
#attributePanel .equipment-controls label{font-size:10px;font-weight:500;color:#738b9a;gap:5px}
#attributePanel .equipment-controls input,#attributePanel .equipment-controls select{height:33px;border:1px solid #cfdee7;border-radius:5px;background:#fff;color:#304d60;font:400 11px/1.4 inherit;padding:6px 8px;box-sizing:border-box}
#attributePanel button{transition:background .12s,border-color .12s}
#attributePanel .equipment-controls>button,#attributePanel .equipment-pagination button{height:33px;padding:6px 11px;background:#fff;border:1px solid #cddde7;border-radius:5px;color:#41677f;font-size:11px}
#attributePanel .equipment-controls>button:hover,#attributePanel .equipment-pagination button:hover{background:#edf5fa;border-color:#91b4ca}
#attributePanel .equipment-controls>#equipmentAdd{background:#287da7;border-color:#287da7;color:white}
#attributePanel button:disabled{opacity:.45;cursor:default}
#attributePanel input:focus-visible,#attributePanel select:focus-visible,#attributePanel button:focus-visible{outline:2px solid #4b96bc;outline-offset:1px}
#attributePanel #equipmentCount{padding:10px 16px;margin:0;font-size:11px;color:#6d8595;border-bottom:1px solid #edf2f6}
#attributePanel .equipment-scroll{flex:1;min-height:0;max-height:none;overflow:auto}
#attributePanel .equipment-scroll table{font-size:11px;white-space:nowrap}
#attributePanel .equipment-scroll th{background:#edf4f8;color:#4f7187;font-size:10px;font-weight:600;padding:11px 14px;border-bottom:1px solid #d6e4ed;z-index:1}
#attributePanel .equipment-scroll td{padding:11px 14px;border-bottom:1px solid #eaf0f4;color:#405b6c}
#attributePanel .equipment-scroll tbody tr:nth-child(even){background:#f9fbfd}
#attributePanel .equipment-scroll tbody tr:hover{background:#eef6fb}
#attributePanel .equipment-id{margin-top:3px;font-size:9px;color:#8b9eaa}
#attributePanel .equipment-actions button{padding:4px 7px;border:1px solid #d3e1e9;background:#fff;border-radius:4px;color:#47738c;font-size:10px}
#attributePanel .equipment-pagination{padding:10px 16px;gap:10px;background:#fbfdfe;font-size:11px;color:#6c8595;flex-shrink:0}
@container(max-width:700px){#attributePanel .equipment-layout{height:auto;min-height:100%}#attributePanel .equipment-browser{width:auto;max-height:150px;border-right:0}#attributePanel .equipment-content{overflow:visible}#attributePanel .equipment-scroll{min-height:180px;max-height:45vh}#attributePanel .equipment-controls{padding:12px;gap:8px}}

#attributePanel .equipment-category-row{margin:1px 0}#attributePanel .equipment-browser [data-category]{padding:6px 9px}#attributePanel .equipment-category-row [data-manage-category]{padding:3px 7px}#attributePanel #equipmentNewCategory{margin-bottom:7px}#attributePanel .equipment-browser h3{margin-bottom:8px}

#attributePanel .equipment-category-row{margin:0}#attributePanel .equipment-browser [data-category]{padding:3px 9px;min-height:25px}#attributePanel .equipment-category-row [data-manage-category]{padding:0 7px;min-height:25px;height:25px;line-height:23px}

#attributePanel .equipment-category-row [data-add-category-equipment]{flex:0 0 23px;width:23px;height:25px;min-height:0;padding:0;border:0;border-radius:4px;background:transparent;color:#3f7898;font-size:16px;line-height:23px}#attributePanel .equipment-category-row [data-add-category-equipment]:hover{background:#dcecf6}


#oltManagementPanel{position:fixed;z-index:1200;box-sizing:border-box;background:#fff;border:1px solid #d9e4eb;display:flex;flex-direction:column}#oltManagementPanel[hidden]{display:none}.olt-management-head{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid #e3ebf0}.olt-management-head h2{margin:0;color:#254c63;font-size:14px;font-weight:600}.olt-management-content{flex:1;min-height:0;overflow:auto}

.olt-management-head small{display:block;font-size:10px;color:#7891a1;margin-top:4px}.olt-management-content{padding:20px;background:#f6f9fb}.olt-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:16px}.olt-toolbar h3{margin:0;font-size:17px;color:#294e63}.olt-toolbar p{margin:6px 0 0;font-size:12px;color:#728a99}.olt-toolbar button,.olt-empty button{padding:9px 14px;border:1px solid #2b7fa6;border-radius:5px;background:#2b7fa6;color:#fff}.olt-notice{padding:10px 12px;border:1px solid #dbe7ef;border-radius:5px;background:#eef5fa;color:#587587;font-size:11px;line-height:1.6}.olt-error,.olt-form-error{font-size:12px;color:#b34848}.olt-devices{display:grid;gap:10px}.olt-card{display:flex;align-items:center;gap:18px;padding:16px;background:#fff;border:1px solid #dbe6ed;border-radius:7px}.olt-card>div:first-child{flex:1;min-width:0}.olt-card h4{margin:0 0 5px;color:#294e63;font-size:14px}.olt-card small,.olt-card p{font-size:11px;color:#728b9a}.olt-card p{margin:6px 0 0}.olt-state{font-size:10px;color:#768c99;background:#f0f4f6;padding:5px 8px;border-radius:12px}.olt-state.is-live{background:#e5f6ef;color:#237b58}.olt-state.is-error{background:#fff0ed;color:#ad5145}.olt-card-actions{display:flex;gap:5px}.olt-card-actions button,.olt-system button{padding:6px 9px;background:#fff;border:1px solid #cbdde8;border-radius:4px;color:#3b6a84;font-size:11px}.olt-empty{text-align:center;padding:45px 15px;color:#718997;background:white;border:1px dashed #c4d6e1;border-radius:7px}.olt-empty h3{color:#365b70}.olt-empty p{font-size:12px}.olt-system{margin-top:18px;padding:18px;background:white;border:1px solid #dbe6ed;border-radius:7px}.olt-system-head{display:flex;align-items:center;justify-content:space-between}.olt-system h3{margin:0;color:#315b72;font-size:14px}.olt-system dl{display:grid;grid-template-columns:180px minmax(0,1fr);font-size:12px;gap:12px}.olt-system dt{color:#7b909d}.olt-system dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;color:#36576b}.olt-add-dialog{width:min(580px,calc(100vw - 30px));box-sizing:border-box;max-height:90vh;overflow:auto;border:1px solid #cbdde8;border-radius:8px;padding:20px}.olt-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:16px 0}.olt-form-grid label{display:grid;gap:6px;font-size:11px;color:#617f91}.olt-form-grid input,.olt-form-grid select{width:100%;box-sizing:border-box;padding:9px;border:1px solid #cbdde8;border-radius:4px;font:inherit;color:#2d5269}.olt-form-actions{display:flex;gap:8px}.olt-form-actions button{padding:8px 15px;border-radius:4px;border:1px solid #cbdde8}.olt-form-actions .primary{background:#287fa8;color:white}@media(max-width:700px){.olt-card{flex-wrap:wrap}.olt-card-actions{width:100%}.olt-form-grid{grid-template-columns:1fr}.olt-system dl{grid-template-columns:1fr;gap:6px}.olt-management-content{padding:12px}}

.olt-status-group{text-align:center;min-width:100px}.olt-updown{display:inline-flex;gap:4px}.olt-updown>span{padding:5px 9px;border-radius:5px;background:#edf1f4;color:#99aab5;font-size:10px;font-weight:600}.olt-up.active{background:#dff4e9;color:#187148}.olt-down.active{background:#fde7e5;color:#af3e38}.olt-check-time{display:block;margin-top:5px;font-size:9px;color:#8194a0}.olt-port-summary{display:flex;gap:10px;flex-wrap:wrap;margin:15px 0}.olt-port-summary>span{padding:11px 14px;border:1px solid #dbe6ed;border-radius:5px;color:#58798d;font-size:11px}.olt-port-summary b{font-size:18px;color:#315c74;margin-right:4px}.olt-port-scroll{overflow:auto}.olt-port-scroll table{width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap}.olt-port-scroll th{background:#eef5f9;color:#56778c;text-align:left}.olt-port-scroll td,.olt-port-scroll th{padding:10px;border-bottom:1px solid #e5edf2}.olt-port-state.up{color:#247a53}.olt-port-state.down{color:#ae4a43}.olt-port-note{font-size:10px;color:#8193a0;line-height:1.6}.olt-system details{margin-top:16px}.olt-system summary{cursor:pointer;font-size:12px;color:#52738a;padding:8px 0}

.olt-card-title{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.olt-card-title h4{margin:0}.olt-card-title small{white-space:nowrap}

.olt-onu-inventory{margin-top:22px;padding-top:14px;border-top:1px solid #dce8ef}.olt-onu-filter{display:flex;gap:8px;align-items:center;font-size:11px;color:#638194;margin:10px 0}.olt-onu-filter select{padding:6px 9px;border:1px solid #cddfe8;border-radius:4px;background:#fff;color:#365c73}

#oltManagementPanel .olt-toolbar{padding:12px 15px;border-bottom:1px solid #e2e9ee;background:#fff;margin:0}.olt-toolbar h3{font-size:13px}.olt-toolbar p{display:none}.olt-toolbar-actions{display:flex;align-items:center;gap:10px;margin-left:auto}.olt-toolbar-actions button{height:28px!important;min-height:0;padding:4px 11px!important;border-radius:14px!important;font-size:10px!important;line-height:18px;background:#23465d!important;border-color:#23465d!important;color:white!important;white-space:nowrap}.olt-toolbar-actions button:disabled{opacity:.45}.olt-auto-label{font-size:10px;color:#337f5e;white-space:nowrap}.olt-management-content{padding:12px}.olt-management-content>.olt-notice{font-size:10px;margin:8px 0;padding:7px 10px;background:#f5f9fc}.olt-table-controls{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 12px;background:#fff;border:1px solid #e2e9ee;border-bottom:0}.olt-table-controls label{display:flex;align-items:center;gap:6px;font-size:10px;color:#71818c}.olt-table-controls select,.olt-table-controls input{height:28px;border:1px solid #ced9e0;border-radius:3px;padding:4px 7px;background:#fff;color:#3e5868;font-size:11px}.olt-table-controls input{width:170px;max-width:35vw}.olt-devices{display:block;background:#fff;border:1px solid #e2e9ee}.olt-list-scroll{overflow:auto}.olt-list-table{width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap}.olt-list-table th{height:37px;padding:0 13px;background:#23465d;color:white;font-size:10px;font-weight:500;text-align:center;border-right:1px solid #b7ccd8}.olt-list-table th:first-child{width:25px}.olt-list-table td{padding:10px 13px;text-align:center;border-right:1px solid #edf1f4;border-bottom:1px solid #e9eef2;color:#435965}.olt-list-table tbody tr:hover{background:#f3f8fc}.olt-list-table .olt-row-active{background:#f0f7fb}.olt-row-name{border:0;background:transparent;color:#315d76;padding:2px 0;font:inherit;cursor:pointer}.olt-row-name:hover{text-decoration:underline}.olt-row-actions{display:flex;justify-content:center;gap:8px}.olt-row-actions button{width:24px;height:24px;min-height:0;padding:0;border:0;border-radius:3px;background:transparent;color:#2c8a60;font-size:18px;line-height:24px;cursor:pointer}.olt-row-actions [data-sync-one]{color:#6d5294}.olt-row-actions .olt-remove{color:#be4f48}.olt-row-actions button:hover{background:#e7eff4}.olt-list-table input[type=checkbox]{width:13px;height:13px;margin:0;vertical-align:middle;accent-color:#356d8c}.olt-list-table .olt-updown>span{padding:3px 7px;font-size:9px}.olt-list-table .olt-check-time{font-size:9px}.olt-list-empty{padding:30px!important;color:#8b9ba5!important}.olt-list-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;font-size:10px;color:#80939f}.olt-list-footer>div{display:flex;align-items:center;gap:9px}.olt-list-footer button{padding:4px 8px;font-size:10px;border:1px solid #d5e1e8;border-radius:3px;color:#5b7a8e;background:white}.olt-list-footer button:disabled{opacity:.4}@media(max-width:600px){.olt-toolbar-actions{gap:6px}.olt-auto-label{display:none}.olt-management-content{padding:7px}.olt-list-table td{padding:8px}.olt-table-controls{padding:8px}.olt-toolbar h3{font-size:11px}}

.olt-row-actions .olt-open{width:auto;padding:0 8px;font-size:10px;line-height:23px;border:1px solid #c6dbe7;color:#2b6a90;background:#f4f9fc;border-radius:4px;margin-left:3px}.olt-row-actions .olt-open:hover{background:#e1eff8}.olt-detail-open .olt-management-content>.olt-toolbar,.olt-detail-open .olt-management-content>.olt-notice,.olt-detail-open .olt-table-controls,.olt-detail-open .olt-devices{display:none}.olt-detail-open .olt-system{margin-top:0}.olt-detail-heading{display:flex;gap:15px;align-items:center}.olt-detail-heading [data-back]{font-size:10px}.olt-detail-open .olt-management-content{background:#f5f9fc}

#oltManagementPanel{container-type:inline-size}@container(max-width:760px){.olt-list-table{table-layout:fixed;font-size:10px}.olt-list-table th,.olt-list-table td{padding:8px 5px}.olt-list-table th:first-child{width:22px}.olt-list-table th:nth-child(2){width:30px}.olt-list-table th:nth-child(3){width:82px}.olt-list-table th:nth-child(5){width:91px}.olt-list-table th:nth-child(6){width:76px}.olt-list-table th:nth-child(7){width:108px}.olt-list-table td:nth-child(4),.olt-list-table td:nth-child(5){white-space:normal;overflow-wrap:anywhere}.olt-row-actions{gap:2px}.olt-row-actions button{width:19px;height:22px;font-size:16px}.olt-row-actions .olt-open{padding:0 5px;font-size:9px;margin-left:1px}.olt-list-table th{font-size:9px}.olt-list-table .olt-updown{gap:2px}.olt-list-table .olt-updown>span{padding:3px 5px}}@container(max-width:480px){.olt-list-table th:nth-child(2),.olt-list-table td:nth-child(2),.olt-list-table th:nth-child(5),.olt-list-table td:nth-child(5){display:none}.olt-list-table th:nth-child(3){width:78px}.olt-list-table th:nth-child(7){width:100px}.olt-table-controls input{width:110px}.olt-list-footer{flex-wrap:wrap}}

.olt-port-face{margin:18px 0;background:#244f67;border:1px solid #315d73;border-radius:7px;padding:14px 16px;color:#e7f3fa}.olt-port-face-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:20px}.olt-port-face-heading b{font-size:12px;font-weight:500}.olt-port-face-heading>span{font-size:9px;display:flex;align-items:center;gap:5px;color:#bdd2de}.olt-port-face-heading i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#91a2ac;margin-left:5px}.olt-port-face-heading i.up{background:#62d499}.olt-port-face-heading i.down{background:#ef7773}.olt-port-face-groups{display:flex;gap:30px;flex-wrap:wrap}.olt-port-face-group>small{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.5px;color:#a5c6d9;margin-bottom:11px}.olt-port-face-grid{display:grid;grid-template-columns:repeat(8,31px);gap:14px 8px}.olt-port-tile{display:flex;flex-direction:column;align-items:center;gap:5px;font-size:9px;color:#d9e8f1}.olt-port-socket{display:block;position:relative;width:26px;height:22px}.olt-port-socket svg{width:26px;height:22px}.olt-port-socket>i{position:absolute;width:7px;height:7px;border-radius:50%;background:#8196a2;left:9px;top:11px;border:1px solid #143143}.olt-port-tile.up .olt-port-socket>i{background:#6de4a4;box-shadow:0 0 6px #6de4a45c}.olt-port-tile.down .olt-port-socket>i{background:#f16e68;box-shadow:0 0 5px #f16e683d}.olt-port-face>p{font-size:9px;margin:16px 0 0;color:#a2c1d3}@container(max-width:480px){.olt-port-face-grid{grid-template-columns:repeat(4,31px)}.olt-port-face-heading{align-items:flex-start;flex-direction:column;gap:7px}}

.olt-port-face-reference{padding:0;border:0;border-radius:0;background:transparent;color:#223d4d;margin:17px 0 20px}.olt-port-face-reference>h4{font-size:12px;font-weight:600;margin:0 0 12px;color:#243c49}.olt-device-front{box-sizing:border-box;min-height:124px;padding:13px 18px 9px;display:flex;align-items:flex-end;justify-content:space-around;gap:24px;background:#087faa;border:2px solid #6e8087;overflow-x:auto}.olt-reference-pon,.olt-reference-ge{display:flex;align-items:flex-end;gap:13px;flex:0 0 auto}.olt-reference-stacked{display:flex;align-items:flex-end;gap:13px;flex:0 0 auto}.olt-port-face-reference .olt-port-tile{width:26px;flex:0 0 26px;font-size:11px;line-height:14px;gap:3px;color:white}.olt-port-face-reference .olt-port-socket{width:24px;height:24px}.olt-port-face-reference .olt-port-socket svg{width:24px;height:24px}.olt-port-face-reference .olt-port-label{white-space:nowrap}.olt-port-pair{display:flex;flex-direction:column;gap:4px}.olt-port-face-reference .label-above{flex-direction:column-reverse}.olt-port-face-reference .olt-port-socket>i{display:none}@container(max-width:1100px){.olt-device-front{gap:18px;padding-left:12px;padding-right:12px}.olt-reference-pon,.olt-reference-ge,.olt-reference-stacked{gap:8px}.olt-port-face-reference .olt-port-tile{width:23px;flex-basis:23px;font-size:10px}}@container(max-width:760px){.olt-device-front{justify-content:flex-start;gap:18px}.olt-reference-pon,.olt-reference-ge,.olt-reference-stacked{gap:5px}.olt-port-face-reference .olt-port-tile{width:20px;flex-basis:20px;font-size:9px}.olt-port-face-reference .olt-port-socket,.olt-port-face-reference .olt-port-socket svg{width:21px;height:23px}}

.olt-onu-status-menu{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.olt-onu-status-menu .olt-onu-menu{display:flex;align-items:center;justify-content:space-between;gap:24px;min-width:145px;padding:11px 14px;border:1px solid #d3e1e9;border-radius:6px;background:#f7fafc;color:#54758a;font-size:11px;cursor:pointer}.olt-onu-menu strong{font-size:20px;font-weight:600}.olt-onu-status-menu .olt-onu-online{background:#edf8f2;border-color:#c6e6d5;color:#23784e}.olt-onu-status-menu .olt-onu-offline{background:#fff2f0;border-color:#efcfca;color:#ad5045}.olt-onu-status-menu .olt-onu-menu[aria-pressed=true]{outline:2px solid currentColor;outline-offset:-2px}.olt-onu-menu:hover{filter:brightness(.98)}@container(max-width:480px){.olt-onu-status-menu{gap:7px}.olt-onu-status-menu .olt-onu-menu{min-width:0;flex:1;gap:9px;padding:9px;font-size:10px}.olt-onu-menu strong{font-size:16px}}

.olt-onu-status-menu .olt-onu-menu{align-items:baseline;white-space:nowrap;min-height:46px;box-sizing:border-box;line-height:22px}.olt-onu-menu>span,.olt-onu-menu>strong{display:inline-block;white-space:nowrap;line-height:22px;margin:0}.olt-onu-status-menu+.olt-onu-inventory{margin-top:4px;margin-bottom:20px;padding-top:10px}

.olt-onu-delete{padding:4px 9px!important;border:1px solid #e7c4bf!important;background:#fff5f3!important;color:#b54b40!important;border-radius:4px;font-size:10px!important}.olt-onu-delete:disabled{opacity:.45}.olt-onu-delete-dialog{width:min(480px,95vw);max-height:90vh;overflow:auto;border:1px solid #d8e3eb;border-radius:8px;padding:20px}.olt-onu-delete-dialog dl{display:grid;grid-template-columns:120px 1fr;font-size:12px;gap:8px}.olt-onu-delete-dialog dd{margin:0;overflow-wrap:anywhere}.olt-onu-delete-dialog dt{color:#728a99}.olt-delete-confirm{display:flex;align-items:center;gap:8px;font-size:11px;margin:15px 0;color:#775048}.olt-onu-delete-dialog .danger{background:#b84e42;color:white;border-color:#b84e42}

.olt-onu-result{padding:9px 12px;background:#edf8f1;border:1px solid #c6e5d0;border-radius:4px;font-size:11px;color:#28764a}

.olt-onu-status-menu .olt-delete-offline-group{align-self:center;padding:7px 11px;border:1px solid #e1bdb7;border-radius:5px;background:#fff3f0;color:#ad4d40;font-size:11px;white-space:nowrap}.olt-onu-status-menu .olt-delete-offline-group:disabled{opacity:.45}.olt-onu-batch-dialog{width:min(690px,95vw)}.olt-delete-selection{max-height:240px;overflow:auto;border:1px solid #e2e9ed;border-radius:4px}.olt-delete-selection table{font-size:11px;margin:0;white-space:nowrap}.olt-delete-selection th{position:sticky;top:0;background:#f0f5f8}.olt-delete-select-all{display:flex;align-items:center;gap:7px;font-size:12px;margin:12px 0}.olt-delete-progress{font-size:11px;color:#557b92}

.olt-onu-controls{display:flex;align-items:flex-end;flex-wrap:wrap;gap:8px 12px;padding:12px;background:#f2f7fa;border:1px solid #dce7ed;border-radius:5px;margin:10px 0}.olt-onu-controls label{display:grid;gap:5px;font-size:10px;color:#5e7f92}.olt-onu-controls select,.olt-onu-controls input{height:29px;box-sizing:border-box;border:1px solid #c6d9e4;border-radius:3px;background:white;padding:5px 7px;font-size:11px;color:#31576e;width:145px}.olt-onu-controls input[data-onu-id]{width:155px}.olt-onu-controls>button{height:29px;padding:4px 10px;font-size:11px;border-radius:3px;border:1px solid #bfd4e1;background:#e7f1f8;color:#376c8a}@container(max-width:480px){.olt-onu-controls label{flex:1;min-width:115px}.olt-onu-controls input,.olt-onu-controls select,.olt-onu-controls input[data-onu-id]{width:100%}}

.olt-onu-controls>.olt-delete-offline-group{background:#fff3f0;color:#ad4d40;border-color:#e1bdb7;white-space:nowrap}.olt-onu-controls>.olt-delete-offline-group:disabled{opacity:.5;cursor:not-allowed}

.olt-delete-hint{flex-basis:100%;font-size:11px;line-height:16px;color:#7c6860;padding-top:2px}

/* MikroTik setup card, scoped to the Router workspace. */
#routerManagementPanel .olt-management-content{padding:24px;max-width:1200px;margin:auto}
#routerManagementPanel .router-setup-form{width:min(100%,680px);box-sizing:border-box;margin:24px auto;padding:28px;border:1px solid #dce6ef;border-radius:18px;background:#fff;box-shadow:0 12px 36px #193b5710;gap:22px;color:#203d52}
#routerManagementPanel .router-form-heading{display:flex;gap:16px;align-items:center;border-bottom:1px solid #e8eef4;padding-bottom:20px}
#routerManagementPanel .router-form-icon{width:52px;height:52px;display:grid;place-items:center;flex-shrink:0;border-radius:14px;background:#e8f3fc;color:#246da2;font-size:30px}
#routerManagementPanel .router-form-eyebrow{font-size:10px;font-weight:700;letter-spacing:1.5px;color:#69859a}
#routerManagementPanel .router-form-heading h3{margin:4px 0 5px;font-size:23px;color:#163a55}
#routerManagementPanel .router-form-heading p{margin:0;color:#718698;font-size:13px}
#routerManagementPanel .router-form-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
#routerManagementPanel .router-form-fields label{display:flex;flex-direction:column;gap:8px;font-size:12px;font-weight:600;color:#496175;min-width:0}
#routerManagementPanel .router-field-wide{grid-column:1/-1}
#routerManagementPanel .router-form-fields input{width:100%;box-sizing:border-box;min-width:0;height:44px;border:1px solid #d5e1eb;border-radius:9px;background:#f9fbfd;padding:10px 12px;font:14px system-ui;color:#18384e;outline:none}
#routerManagementPanel .router-form-fields input:focus{border-color:#4b94c9;box-shadow:0 0 0 3px #3589c517;background:#fff}
#routerManagementPanel .router-form-note{margin:0;padding:13px 15px;border-radius:9px;background:#f0f6fb;color:#59768b;font-size:12px;line-height:1.6}
#routerManagementPanel .router-form-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid #e8eef4;padding-top:18px}
#routerManagementPanel .router-form-actions button,#routerManagementPanel [data-router-add]{border-radius:8px;padding:10px 19px;border:1px solid #cedce7;font-size:13px;cursor:pointer}
#routerManagementPanel .router-form-actions .primary,#routerManagementPanel [data-router-add]{background:#214f71;color:#fff;border-color:#214f71}
@media(max-width:640px){#routerManagementPanel .olt-management-content{padding:14px}#routerManagementPanel .router-setup-form{padding:20px;margin:16px auto}#routerManagementPanel .router-form-fields{grid-template-columns:1fr;gap:16px}}
#routerManagementPanel .router-form-fields select{width:100%;height:44px;box-sizing:border-box;border:1px solid #d5e1eb;border-radius:9px;background:#f9fbfd;padding:10px 12px;font:14px system-ui;color:#18384e}
#routerManagementPanel .router-user-tabs{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}
#routerManagementPanel .router-user-tab{display:flex;align-items:center;gap:18px;justify-content:space-between;min-width:150px;border:1px solid #d3e0eb;background:#f4f8fc;border-radius:11px;padding:14px 18px;color:#345b79;cursor:pointer;font:13px system-ui}
#routerManagementPanel .router-user-tab strong{font-size:23px;font-weight:600}
#routerManagementPanel .router-user-tab.active{background:#effaf4;color:#237d50;border-color:#c7e8d6}
#routerManagementPanel .router-user-tab.inactive{background:#fff3f3;color:#b44949;border-color:#edcece}
#routerManagementPanel .router-user-tab.selected{outline:2px solid currentColor;outline-offset:1px}
.olt-power-alert-fields{border:1px solid #d5e3ef;background:#f6faff;border-radius:12px;padding:16px;margin:18px 0;color:#31546d}
.olt-power-alert-fields legend{padding:0 8px;font-weight:600;font-size:13px}
.olt-power-alert-fields .olt-alert-switch{display:flex;align-items:center;gap:8px;margin-bottom:15px;font-size:13px}
.olt-power-alert-fields .olt-alert-switch input{width:16px;height:16px;margin:0}
.olt-power-alert-fields small{font-size:11px;color:#71879a;line-height:1.5}
.olt-alert-message-preview{background:#eaf6ee;border:1px solid #cce3d3;border-radius:9px;padding:12px 14px;font-size:12px;color:#35634a}
.olt-alert-message-preview p{margin:6px 0 0;line-height:1.6}
.olt-form-tabs{display:flex;gap:6px;padding:5px;border:1px solid #dce6ef;background:#edf3f8;border-radius:11px;margin:16px 0 20px}
.olt-form-tabs [role=tab]{flex:1;border:0;border-radius:7px;padding:11px 14px;background:transparent;color:#637f94;font-size:13px;font-weight:600;cursor:pointer}
.olt-form-tabs [role=tab][aria-selected=true]{background:#fff;color:#204f72;box-shadow:0 2px 7px #234f7115}
.olt-form-tabs [role=tab]:focus-visible{outline:2px solid #4a97c9;outline-offset:2px}
.olt-add-dialog [data-olt-pane][hidden]{display:none!important}
.olt-add-dialog [data-olt-pane=alerts] .olt-power-alert-fields{margin-top:0}
.olt-add-dialog{width:min(640px,calc(100vw - 28px));padding:24px;border-radius:14px}
.olt-add-dialog .olt-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}
.olt-add-dialog .olt-form-grid label{min-width:0;align-content:start;font-size:12px}
.olt-add-dialog .olt-form-grid input,.olt-add-dialog .olt-form-grid select{height:42px;min-width:0;border-radius:7px;padding:10px 12px;font-size:13px}
.olt-add-dialog .olt-alert-recipient{grid-column:1/-1}
.olt-add-dialog .olt-power-alert-fields{min-width:0;box-sizing:border-box;padding:18px}
.olt-add-dialog .olt-form-actions{justify-content:flex-end;padding-top:16px;border-top:1px solid #e1e9f0}
.olt-add-dialog .olt-form-actions button{min-height:39px;padding:9px 18px;border-radius:7px}
@media(max-width:540px){.olt-add-dialog{padding:16px}.olt-add-dialog .olt-form-grid{grid-template-columns:1fr;gap:14px}.olt-add-dialog .olt-form-tabs [role=tab]{padding:10px 7px;font-size:12px}}
.olt-add-dialog [data-message-channel][hidden]{display:none!important}
.olt-channel-picker{display:flex;gap:8px;padding:5px;border:1px solid #d9e5ef;border-radius:10px;background:#edf4f8}
.olt-channel-picker button{flex:1;padding:11px 16px;border:1px solid transparent;border-radius:7px;background:transparent;color:#648095;font-size:13px;font-weight:600;cursor:pointer}
.olt-channel-picker button[aria-pressed=true]{background:#fff;border-color:#c8dce9;color:#24658b;box-shadow:0 2px 5px #224f7110}
.olt-channel-picker select[hidden]{display:none!important}
.olt-secret-field{position:relative;display:block;min-width:0}
.olt-add-dialog .olt-secret-field input{padding-right:44px}
.olt-secret-field [data-show-telegram-token]{position:absolute;right:3px;top:3px;width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:6px;background:transparent;color:#648297;cursor:pointer;padding:0}
.olt-secret-field [data-show-telegram-token]:hover,.olt-secret-field [aria-pressed=true]{background:#e8f1f8;color:#27678d}
.olt-secret-field [data-show-telegram-token]:focus-visible{outline:2px solid #5699c6}
.olt-alert-message-editor{display:grid;gap:8px;margin:16px 0;font-size:12px;color:#456b84}
.olt-alert-message-editor textarea{width:100%;box-sizing:border-box;resize:vertical;min-height:150px;padding:12px;border:1px solid #c7dce9;border-radius:8px;background:#fff;color:#284f68;font:13px/1.6 system-ui}
.olt-alert-message-editor textarea:focus{outline:2px solid #88bad9;outline-offset:1px}
.olt-alert-message-editor small{line-height:1.6;overflow-wrap:anywhere}
.olt-alert-message-preview p{white-space:pre-wrap;overflow-wrap:anywhere}
.olt-add-dialog .olt-alarm-toggles{display:grid;gap:8px;padding:3px 0 5px}
.olt-add-dialog .olt-alarm-toggles .olt-alert-switch{display:flex;align-items:center;gap:8px;margin:0;line-height:1.4}
/* Compact alarm form: avoid applying text-input dimensions to checkboxes. */
.olt-add-dialog .olt-alarm-toggles{gap:5px;padding:0}
.olt-add-dialog .olt-alarm-toggles .olt-alert-switch{gap:7px;min-height:18px;font-size:12px;line-height:18px}
.olt-add-dialog .olt-alarm-toggles input[type=checkbox]{width:15px;height:15px;min-height:0;margin:0;padding:0;flex:0 0 15px}
.olt-add-dialog [data-olt-pane=alerts] .olt-form-grid{gap:10px 14px;margin:9px 0}
.olt-add-dialog [data-olt-pane=alerts] .olt-form-grid label{gap:4px;font-size:11px}
.olt-add-dialog [data-olt-pane=alerts] .olt-form-grid input:not([type=checkbox]),.olt-add-dialog [data-olt-pane=alerts] .olt-form-grid select{height:34px;padding:7px 10px;font-size:12px}
.olt-add-dialog .olt-message-service select{max-width:230px}
.olt-add-dialog [data-olt-pane=alerts] .olt-power-alert-fields{padding:12px 14px;margin-bottom:10px}
.olt-add-dialog [data-olt-pane=alerts] .olt-notice{margin:8px 0;padding:7px 9px;line-height:1.4;font-size:10px}
.olt-add-dialog [data-olt-pane=alerts] .olt-alert-message-editor{margin:10px 0;gap:5px;font-size:11px}
.olt-add-dialog [data-olt-pane=alerts] .olt-alert-message-editor textarea{min-height:76px;padding:8px 10px;font:12px/1.4 system-ui}
.olt-add-dialog [data-olt-pane=alerts] .olt-alert-message-editor small{font-size:10px;line-height:1.4}
.olt-add-dialog [data-olt-pane=alerts] .olt-alert-message-preview{margin:7px 0;padding:7px 10px;font-size:11px}
.olt-add-dialog .olt-alert-message-preview summary{cursor:pointer;font-weight:600}
.olt-add-dialog [data-olt-pane=alerts] .olt-secret-field [data-show-telegram-token]{width:28px;height:28px;top:3px;right:3px}
.olt-add-dialog [data-olt-pane=alerts] .olt-secret-field input{padding-right:36px}
.olt-add-dialog:has([data-olt-pane=alerts]:not([hidden])){width:min(920px,calc(100vw - 28px))}
.olt-alarm-layout{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:20px;align-items:start}
.olt-alarm-controls,.olt-alarm-messages{min-width:0}
.olt-alarm-messages{border-left:1px solid #d8e5ef;padding-left:20px}
.olt-add-dialog [data-olt-pane=alerts] .olt-alarm-messages .olt-alert-message-editor:first-child{margin-top:0}
.olt-add-dialog .olt-alarm-controls .olt-message-service select{max-width:none}
.olt-add-dialog .olt-alarm-controls .olt-form-grid{margin-top:0}
@media(max-width:720px){.olt-alarm-layout{grid-template-columns:1fr;gap:12px}.olt-alarm-messages{border-left:0;border-top:1px solid #d8e5ef;padding-left:0;padding-top:14px}}
.olt-add-dialog .olt-alarm-layout{gap:14px}
.olt-add-dialog .olt-alarm-controls{padding:13px;border:1px solid #d5e3ed;border-radius:10px;background:#fff}
.olt-add-dialog .olt-alarm-messages{display:grid;gap:12px;border:0;padding:0}
.olt-add-dialog .olt-alarm-message-card{padding:12px;border:1px solid #d5e3ed;border-radius:10px;background:#fff;min-width:0}
.olt-add-dialog [data-olt-pane=alerts] .olt-alarm-message-card .olt-alert-message-editor{margin-top:0;margin-bottom:8px}
.olt-add-dialog [data-olt-pane=alerts] .olt-alarm-message-card .olt-alert-message-preview{margin-bottom:0}
#routerManagementPanel .router-setup-form.router-alarm-open{width:min(100%,900px)}
#routerManagementPanel [data-router-pane][hidden],#routerManagementPanel [data-router-channel][hidden]{display:none!important}
#routerManagementPanel .router-setup-form>.olt-form-tabs{margin:0}
#routerManagementPanel [data-router-pane=alarms] .router-form-fields{gap:12px}
#routerManagementPanel .router-alarm-toggle{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;font-size:12px}
#routerManagementPanel .router-alarm-toggle input{width:15px;height:15px;padding:0;margin:0}
#routerManagementPanel [data-router-pane=alarms] .olt-alarm-controls,#routerManagementPanel [data-router-pane=alarms] .olt-alarm-message-card{border:1px solid #d5e3ed;border-radius:10px;background:#fff;padding:13px;min-width:0}
#routerManagementPanel [data-router-pane=alarms] .olt-alarm-messages{border:0;padding:0}
#routerManagementPanel .router-message-editor{display:grid;gap:8px;font-size:12px;color:#496b81}
#routerManagementPanel .router-message-editor textarea{box-sizing:border-box;width:100%;min-height:140px;resize:vertical;border:1px solid #d0dfeb;border-radius:8px;padding:10px;font:12px/1.5 system-ui;color:#284c66}
#routerManagementPanel .router-message-editor small{font-size:10px;line-height:1.5}
#routerManagementPanel .router-token-field{position:relative;display:block}
#routerManagementPanel .router-token-field input{padding-right:38px}
#routerManagementPanel [data-router-show-token]{position:absolute;right:3px;top:3px;height:36px;width:32px;border:0;background:transparent;color:#447490;cursor:pointer}
#routerManagementPanel .router-setup-form{border-color:#d8e4ee;box-shadow:0 8px 26px #234b6610;gap:16px;padding:24px}
#routerManagementPanel .router-form-heading{gap:12px;padding-bottom:15px}
#routerManagementPanel .router-form-heading h3{font-size:21px;margin-top:3px}
#routerManagementPanel .router-form-icon{width:44px;height:44px;font-size:26px;border-radius:12px}
#routerManagementPanel .router-setup-form .olt-form-tabs{padding:4px;gap:4px;border-radius:10px}
#routerManagementPanel .router-setup-form .olt-form-tabs button{padding:10px 12px;font-size:12px;border-radius:7px}
#routerManagementPanel [data-router-pane=alarms] .olt-power-alert-fields{margin:0;padding:13px;background:#f5f9fc;border-color:#d8e5ee}
#routerManagementPanel [data-router-pane=alarms] .olt-alarm-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}
#routerManagementPanel [data-router-pane=alarms] .router-form-fields label{font-size:11px;gap:6px}
#routerManagementPanel [data-router-pane=alarms] .router-form-fields input:not([type=checkbox]),#routerManagementPanel [data-router-pane=alarms] .router-form-fields select{height:36px;padding:8px 10px;font-size:12px;border-radius:7px;background:#fbfdff}
#routerManagementPanel [data-router-pane=alarms] label.router-alarm-toggle{display:flex!important;align-items:center!important;flex-direction:row!important;justify-content:flex-start;gap:8px!important;min-height:0!important;width:fit-content;padding:8px 10px;border:1px solid #d7e7dd;border-radius:8px;background:#f0f8f3;color:#355e49;font-size:12px;line-height:18px;box-sizing:border-box}
#routerManagementPanel [data-router-pane=alarms] label.router-alarm-toggle input[type=checkbox]{appearance:auto!important;box-sizing:border-box!important;width:15px!important;min-width:15px!important;max-width:15px!important;height:15px!important;min-height:15px!important;max-height:15px!important;flex:0 0 15px!important;padding:0!important;margin:0!important;accent-color:#348767;box-shadow:none!important}
#routerManagementPanel [data-router-pane=alarms] .router-form-note{margin:10px 0 0;padding:9px 10px;font-size:11px;line-height:1.5}
#routerManagementPanel [data-router-pane=alarms] .router-message-editor{gap:7px;font-weight:600}
#routerManagementPanel [data-router-pane=alarms] .router-message-editor textarea{font-weight:400;min-height:132px;font-size:12px;background:#fbfdff;border-color:#d6e2ec}
#routerManagementPanel [data-router-pane=alarms] .olt-alert-message-preview{font-size:11px;padding:9px 11px;margin-top:12px}
#routerManagementPanel [data-router-pane=alarms] .olt-alert-message-preview summary{cursor:pointer;font-weight:600}
#routerManagementPanel [data-router-pane=alarms] [data-router-show-token]{height:30px;width:30px;top:3px}
@media(max-width:720px){#routerManagementPanel [data-router-pane=alarms] .olt-alarm-layout{grid-template-columns:1fr}#routerManagementPanel .router-setup-form{padding:18px}}
#routerManagementPanel .router-credentials-row{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;min-width:0}
@media(max-width:480px){#routerManagementPanel .router-credentials-row{grid-template-columns:1fr;gap:14px}}
#routerManagementPanel .router-method-row{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(110px,1fr);gap:20px;min-width:0}
@media(max-width:480px){#routerManagementPanel .router-method-row{grid-template-columns:1fr;gap:14px}}
#routerManagementPanel .router-setup-form{width:min(100%,590px);padding:20px;gap:13px}
#routerManagementPanel .router-form-heading{padding-bottom:12px;gap:10px}
#routerManagementPanel .router-form-heading h3{font-size:20px;margin:0}
#routerManagementPanel .router-form-icon{width:36px;height:36px;font-size:23px;border-radius:10px}
#routerManagementPanel [data-router-pane=details] .router-form-fields{gap:12px 14px}
#routerManagementPanel [data-router-pane=details] .router-form-fields label{font-size:11px;gap:5px}
#routerManagementPanel [data-router-pane=details] .router-form-fields input,#routerManagementPanel [data-router-pane=details] .router-form-fields select{height:35px;padding:7px 10px;font-size:12px;border-radius:7px}
#routerManagementPanel .router-credentials-row,#routerManagementPanel .router-method-row{gap:14px}
#routerManagementPanel [data-router-pane=details] .router-form-note{font-size:10px;line-height:1.5;padding:9px 11px;margin-top:12px}
#routerManagementPanel .router-form-actions{padding-top:12px;gap:8px}
#routerManagementPanel .router-form-actions button{padding:8px 15px;font-size:12px}
#routerManagementPanel .olt-management-content>.olt-toolbar{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:9px;margin-bottom:12px}
#routerManagementPanel .olt-management-content>.olt-toolbar h3{margin:0;font-size:16px}
#routerManagementPanel .olt-management-content>.olt-toolbar p{margin:4px 0 0;font-size:11px}
#routerManagementPanel .olt-management-content>.olt-toolbar [data-router-add]{padding:7px 12px;font-size:12px;border-radius:7px;margin:0}
#switchManagementPanel .olt-management-content{padding:20px;max-width:1400px;margin:auto}
#switchManagementPanel .olt-toolbar{justify-content:space-between;gap:12px}
#switchManagementPanel .olt-toolbar label{display:flex;gap:8px;align-items:center;font-size:12px;color:#5d798d}
#switchManagementPanel .olt-toolbar input{border:1px solid #d0dfeb;border-radius:7px;padding:8px 10px;font-size:12px}
#switchManagementPanel .switch-row-actions{display:flex;gap:6px;white-space:nowrap}
#switchManagementPanel .switch-row-actions button{padding:6px 10px;border:1px solid #cadde9;background:#fff;color:#315f7b;border-radius:6px;font-size:12px;cursor:pointer}
.switch-setup-dialog.switch-alarm-open{width:min(900px,calc(100vw - 28px))}
.switch-setup-dialog [data-switch-pane][hidden],.switch-setup-dialog [data-switch-channel][hidden]{display:none!important}
.switch-setup-dialog .olt-alarm-controls,.switch-setup-dialog .olt-alarm-message-card{padding:13px;border:1px solid #d5e3ed;border-radius:10px;background:#fff;min-width:0}
.switch-setup-dialog .olt-alarm-messages{padding:0;border:0}
.switch-setup-dialog .olt-alert-recipient{grid-column:1/-1}
.switch-setup-dialog .olt-alarm-toggles .olt-alert-switch{display:flex;align-items:center;gap:7px;margin:0;font-size:12px}
.switch-setup-dialog .olt-alarm-toggles input[type=checkbox]{width:15px!important;height:15px!important;padding:0!important;margin:0!important;flex:0 0 15px}
.switch-setup-dialog [data-switch-token]{position:absolute;right:3px;top:3px;width:32px;height:34px;border:0;background:transparent;color:#4c7894;cursor:pointer}
@media(max-width:650px){#switchManagementPanel .olt-toolbar{align-items:flex-start;flex-direction:column}#switchManagementPanel .olt-management-content{padding:12px}}
#routerManagementPanel [data-router-show-token],.switch-setup-dialog [data-switch-token],.olt-add-dialog [data-show-telegram-token]{display:grid;place-items:center;border:1px solid #d6e3ed!important;border-radius:5px!important;background:#f0f6fb!important;color:#3c6e8e!important;padding:0!important;cursor:pointer}
#routerManagementPanel [data-router-show-token] svg,.switch-setup-dialog [data-switch-token] svg,.olt-add-dialog [data-show-telegram-token] svg{display:block;width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8}
#routerManagementPanel [data-router-show-token]:hover,.switch-setup-dialog [data-switch-token]:hover,.olt-add-dialog [data-show-telegram-token]:hover{background:#e1eff9!important;border-color:#a9cadf!important}
/* The same website and data, arranged for phone/tablet monitoring. */
@media(max-width:800px){
 html,body{width:100%;height:100%;height:100dvh;min-height:0;overflow:hidden}
 body{display:block!important;padding:0!important;min-width:0!important}
 .topbar{position:fixed!important;top:0!important;left:0!important;right:0!important;height:48px!important;min-height:48px;z-index:1400;padding:0 8px!important;gap:7px!important;box-sizing:border-box}
 .topbar>b{flex:0 0 auto;min-width:0;font-size:12px}
 .topbar #globalSearch{flex:1;min-width:35px;width:auto!important;max-width:none;padding:7px 9px;font-size:12px}
 .topbar #menuToggle{width:32px;min-width:32px;height:32px;padding:4px}
 .topright{margin-left:auto;gap:5px;flex:0 0 auto}
 .rail,.rail:hover,.rail:focus-within{position:fixed!important;left:0!important;top:48px!important;bottom:0!important;height:calc(100dvh - 48px)!important;width:44px!important;min-width:44px!important;max-width:44px!important;z-index:1300;display:flex!important;overflow-y:auto;overflow-x:hidden;padding:6px 3px;box-sizing:border-box}
 .rail .rail-item{width:36px;min-width:36px;max-width:36px;height:38px;min-height:38px;justify-content:center;padding:7px 4px;gap:0;margin:2px 0}
 .rail .rail-item>span:not(.rail-symbol){display:none!important}
 .rail .rail-symbol{width:24px;min-width:24px;margin:0}
 .rail .rail-logo{width:34px;min-width:34px;padding:6px 3px;font-size:10px}
 .rail .rail-submenu{position:fixed!important;left:46px!important;top:54px!important;width:min(255px,calc(100vw - 54px));max-height:calc(100dvh - 70px);overflow-y:auto;z-index:1500}
 main{position:fixed!important;left:44px!important;right:0!important;top:48px!important;bottom:0!important;width:auto!important;height:auto!important;min-height:0!important;margin:0!important;padding:0!important;display:block!important;overflow:hidden}
 main>header{display:none!important}
 .mapwrap{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;border-radius:0!important;margin:0!important}
 #map{width:100%!important;height:100%!important;min-height:0!important}
 aside{position:fixed!important;left:44px!important;top:48px!important;bottom:0!important;width:min(285px,calc(100vw - 44px))!important;min-width:0!important;max-width:calc(100vw - 44px)!important;height:auto!important;z-index:1250!important;display:flex;overflow:hidden;padding:12px!important;background:#fff;box-shadow:8px 0 25px #183c5426}
 body.sidebar-closed aside{display:none!important}
 #layerTree{flex:1;min-height:80px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
 aside .brand{font-size:16px;margin-bottom:8px}
 aside footer{flex-wrap:wrap;gap:5px;font-size:10px}
 aside footer>span{width:100%;font-size:10px;line-height:1.4}
 #detail{position:absolute;left:8px!important;right:8px!important;top:auto!important;bottom:8px!important;width:auto!important;max-width:none!important;max-height:46%;overflow:auto;padding:13px!important;z-index:700}
 .map-stamp{display:none!important}
 .map-tools{width:44px!important;max-width:44px!important;padding:3px!important;gap:2px!important;left:7px!important;top:7px!important}
 .map-tools button{min-height:32px;width:36px;padding:5px!important}
 .map-tools .design-label,.map-tools button>span{display:none!important}
 body.map-edit-locked .map-tools #toolAdd,body.map-edit-locked .map-tools #draw,body.map-edit-locked .map-tools #mapUndo,body.map-edit-locked .map-tools #mapRedo{display:none!important}
 .map-settings{left:58px!important;max-width:calc(100% - 66px)!important;bottom:10px!important}
 .legend{left:58px!important;bottom:45px!important;font-size:9px!important;max-width:calc(100% - 66px)}
 #attributePanel{max-height:100%;max-width:100%;box-sizing:border-box}
 #oltManagementPanel .olt-management-content,#routerManagementPanel .olt-management-content,#switchManagementPanel .olt-management-content{padding:10px!important}
 .olt-management-head{padding:11px!important;gap:8px}
 .olt-management-head h2{font-size:16px!important}
 .olt-port-scroll,.olt-list-scroll{max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch}
 .olt-port-scroll table{min-width:540px}
 .olt-add-dialog{max-height:calc(100dvh - 24px)!important;width:min(94vw,640px);margin:auto;padding:14px!important}
 .router-setup-form{width:100%!important;max-width:100%;padding:14px!important}
 .olt-form-tabs [role=tab]{font-size:11px!important;padding:9px 6px!important}
 .olt-alarm-layout{grid-template-columns:1fr!important}
}
@media(min-width:801px) and (max-width:1100px){aside{width:245px;min-width:245px}.olt-port-scroll{overflow:auto}}

/* Keep the community reveal control inside the input. */
.olt-secret-field [data-show-community]{position:absolute;right:3px;top:50%;transform:translateY(-50%);width:30px;height:30px;display:grid;place-items:center;padding:0;border:0;border-radius:4px;background:transparent;color:#648297;cursor:pointer}
.olt-secret-field [data-show-community]:hover{background:#e8f1f8;color:#27678d}

.olt-inactive-status{display:inline-block;padding:4px 9px;border:1px solid #d5dce2;border-radius:4px;background:#eef1f4;color:#637282;font-size:11px;font-weight:600}

.olt-status-field{display:flex;flex-direction:column;gap:7px}.olt-status-toggle{display:flex!important;flex-direction:row!important;align-items:center;gap:9px!important;position:relative;min-height:36px;cursor:pointer}.olt-status-toggle input[type=checkbox]{position:absolute;opacity:0;width:36px;height:22px;margin:0}.olt-status-track{width:36px;height:22px;background:#a5afb9;border-radius:12px;position:relative;flex:none;transition:background .15s}.olt-status-track:after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;background:white;border-radius:50%;transition:transform .15s}.olt-status-toggle input:checked+.olt-status-track{background:#248a68}.olt-status-toggle input:checked+.olt-status-track:after{transform:translateX(14px)}.olt-status-toggle input:focus-visible+.olt-status-track{outline:2px solid #27678d;outline-offset:3px}

.olt-row-actions .olt-row-toggle{display:inline-flex!important;min-height:24px;margin:0 0 0 4px}.olt-row-toggle .olt-status-track{width:32px;height:20px}.olt-row-toggle .olt-status-track:after{width:14px;height:14px}.olt-row-toggle input:checked+.olt-status-track:after{transform:translateX(12px)}

.router-list-toggle{display:inline-flex!important;vertical-align:middle;min-height:24px;margin:0 4px}

/* Compact, consistent Router connection statuses. */
#routerManagementPanel .router-status-badge{display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;min-width:84px;height:26px;padding:0 10px;border:1px solid transparent;border-radius:6px;white-space:nowrap;font-size:11px;font-weight:600;line-height:1;vertical-align:middle;letter-spacing:.1px}
#routerManagementPanel .router-status-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
#routerManagementPanel .router-status-up{color:#18734d;background:#ecf8f1;border-color:#c8e8d5}
#routerManagementPanel .router-status-down{color:#b63e40;background:#fff0f0;border-color:#f0d0d1}
#routerManagementPanel .router-status-disabled{color:#687581;background:#f1f3f5;border-color:#dce2e7}
#routerManagementPanel .router-status-checking,#routerManagementPanel .router-status-access{color:#637c90;background:#edf4fa;border-color:#d5e3ee}
#routerManagementPanel [data-router-state]{text-align:center;vertical-align:middle;width:108px}

#routerManagementPanel .router-status-badge{height:28px;min-width:90px;border-radius:7px;box-shadow:inset 0 1px 0 rgb(255 255 255 / .9),0 1px 2px rgb(28 51 70 / .06);font-size:10px;font-weight:700;letter-spacing:.35px}
#routerManagementPanel .router-status-up{background:linear-gradient(180deg,#f4fcf7,#e6f5ec);border-color:#c4e3d1}
#routerManagementPanel .router-status-down{background:linear-gradient(180deg,#fff8f8,#fce9e9);border-color:#edc8c9}
#routerManagementPanel .router-status-disabled{background:linear-gradient(180deg,#f8fafb,#edf0f3);border-color:#d8e0e6}
#routerManagementPanel .router-status-up .router-status-dot{box-shadow:0 0 0 3px rgb(24 115 77 / .09)}
#routerManagementPanel .router-status-down .router-status-dot{box-shadow:0 0 0 3px rgb(182 62 64 / .08)}

/* Use the Router panel width and keep row actions together. */
#routerManagementPanel .olt-management-content{width:100%;max-width:none;box-sizing:border-box;margin:0;padding:18px}
#routerManagementPanel .router-inventory-table{width:100%;table-layout:auto}
#routerManagementPanel .router-inventory-table th,#routerManagementPanel .router-inventory-table td{vertical-align:middle;padding:11px 14px}
#routerManagementPanel .router-inventory-table th:first-child,#routerManagementPanel .router-inventory-table td:first-child{width:24px;text-align:center}
#routerManagementPanel .router-inventory-table th:nth-child(2),#routerManagementPanel .router-inventory-table td:nth-child(2){width:54px;text-align:center}
#routerManagementPanel .router-inventory-table th:nth-child(4),#routerManagementPanel .router-inventory-table td:nth-child(4){width:160px}
#routerManagementPanel .router-inventory-table th:nth-child(5){width:108px;text-align:center}
#routerManagementPanel .router-inventory-table th:last-child,#routerManagementPanel .router-inventory-table td:last-child{width:255px;text-align:right;white-space:nowrap}
#routerManagementPanel .router-inventory-table td:last-child>button{margin:0 3px;vertical-align:middle}
#routerManagementPanel .router-inventory-scroll{border:1px solid #dce5ec;border-radius:9px;background:#fff}
@media(max-width:800px){#routerManagementPanel .router-inventory-table{min-width:720px}#routerManagementPanel .router-inventory-table th,#routerManagementPanel .router-inventory-table td{padding:9px 10px}}

/* Match the bordered OLT inventory presentation. */
#routerManagementPanel .router-inventory-scroll{border-radius:6px;border-color:#d6e1e9}
#routerManagementPanel .router-inventory-table th{height:38px;box-sizing:border-box;background:#23465d;color:#fff;font-size:11px;font-weight:500;text-align:center;border-right:1px solid #627e91;border-bottom:1px solid #23465d}
#routerManagementPanel .router-inventory-table td{text-align:center;border-right:1px solid #dfe7ed;border-bottom:1px solid #e5ecf1;color:#435965}
#routerManagementPanel .router-inventory-table th:last-child,#routerManagementPanel .router-inventory-table td:last-child{border-right:0;text-align:center}
#routerManagementPanel .router-inventory-table tbody tr:nth-child(even){background:#f7fafc}
#routerManagementPanel .router-inventory-table tbody tr:hover{background:#edf5fa}
#routerManagementPanel .router-inventory-table th:nth-child(5),#routerManagementPanel .router-inventory-table td:nth-child(5){width:112px}
#routerManagementPanel .router-inventory-table th:nth-child(6),#routerManagementPanel .router-inventory-table td:nth-child(6){width:108px}
#routerManagementPanel .router-brand-label{font-weight:600;color:#365b73;font-size:11px}

/* OLT inventory: match the refined Router list. */
#oltManagementPanel .olt-devices{border-color:#d6e1e9;border-radius:7px;overflow:hidden;box-shadow:0 2px 8px rgb(28 51 70 / .04)}
#oltManagementPanel .olt-list-table{width:100%;font-size:11px}
#oltManagementPanel .olt-list-table th{height:38px;background:#23465d;color:#fff;border-right:1px solid #627e91;font-size:11px;font-weight:500;letter-spacing:.1px}
#oltManagementPanel .olt-list-table td{padding:11px 14px;border-right:1px solid #dfe7ed;border-bottom:1px solid #e5ecf1;vertical-align:middle}
#oltManagementPanel .olt-list-table th:last-child,#oltManagementPanel .olt-list-table td:last-child{border-right:0}
#oltManagementPanel .olt-list-table tbody tr:nth-child(even){background:#f7fafc}
#oltManagementPanel .olt-list-table tbody tr:hover{background:#edf5fa}
#oltManagementPanel .olt-list-table td:nth-child(6){width:108px}
#oltManagementPanel .olt-list-table td:last-child{width:220px}
#oltManagementPanel .olt-list-table .olt-updown>span,#oltManagementPanel .olt-list-table .olt-inactive-status{display:inline-flex;align-items:center;justify-content:center;gap:7px;box-sizing:border-box;min-width:90px;height:28px;padding:0 10px;border:1px solid #d8e0e6;border-radius:7px;font-size:10px;font-weight:700;line-height:1;letter-spacing:.35px;background:linear-gradient(180deg,#f8fafb,#edf0f3);color:#687581;box-shadow:inset 0 1px 0 rgb(255 255 255 / .9),0 1px 2px rgb(28 51 70 / .06)}
#oltManagementPanel .olt-list-table .olt-up.active{background:linear-gradient(180deg,#f4fcf7,#e6f5ec);border-color:#c4e3d1;color:#18734d}
#oltManagementPanel .olt-list-table .olt-down.active{background:linear-gradient(180deg,#fff8f8,#fce9e9);border-color:#edc8c9;color:#b63e40}
#oltManagementPanel .olt-list-table .olt-updown>span:before,#oltManagementPanel .olt-list-table .olt-inactive-status:before{content:"";width:6px;height:6px;background:currentColor;border-radius:50%;flex:none}
#oltManagementPanel .olt-list-table .olt-up.active:before{box-shadow:0 0 0 3px rgb(24 115 77 / .09)}
#oltManagementPanel .olt-row-actions{align-items:center;gap:7px}
#oltManagementPanel .olt-row-actions button{width:28px;height:28px;line-height:28px;border:1px solid #d7e2ea;border-radius:5px;background:#fff;color:#486d85;font-size:15px;box-shadow:0 1px 2px rgb(28 51 70 / .04)}
#oltManagementPanel .olt-row-actions button:hover{background:#eaf3f9;border-color:#b9d0df}
#oltManagementPanel .olt-row-actions button.olt-remove{color:#b14b4f;border-color:#ebd5d7}
#oltManagementPanel .olt-row-actions button.olt-open{width:auto;min-width:62px;padding:0 9px;font-size:11px;font-weight:600;background:#f0f6fa}
@media(max-width:800px){#oltManagementPanel .olt-list-table{min-width:760px}#oltManagementPanel .olt-list-table td{padding:9px 10px}}

/* OLT inventory: match the refined Router list. */
#switchManagementPanel .switch-inventory-scroll{border-color:#d6e1e9;border-radius:7px;overflow:hidden;box-shadow:0 2px 8px rgb(28 51 70 / .04)}
#switchManagementPanel .switch-inventory-table{width:100%;font-size:11px}
#switchManagementPanel .switch-inventory-table th{height:38px;background:#23465d;color:#fff;border-right:1px solid #627e91;font-size:11px;font-weight:500;letter-spacing:.1px}
#switchManagementPanel .switch-inventory-table td{padding:11px 14px;border-right:1px solid #dfe7ed;border-bottom:1px solid #e5ecf1;vertical-align:middle}
#switchManagementPanel .switch-inventory-table th:last-child,#switchManagementPanel .switch-inventory-table td:last-child{border-right:0}
#switchManagementPanel .switch-inventory-table tbody tr:nth-child(even){background:#f7fafc}
#switchManagementPanel .switch-inventory-table tbody tr:hover{background:#edf5fa}
#switchManagementPanel .switch-inventory-table td:nth-child(6){width:108px}
#switchManagementPanel .switch-inventory-table td:last-child{width:220px}
#switchManagementPanel .switch-inventory-table .olt-updown>span,#switchManagementPanel .switch-inventory-table .olt-inactive-status{display:inline-flex;align-items:center;justify-content:center;gap:7px;box-sizing:border-box;min-width:90px;height:28px;padding:0 10px;border:1px solid #d8e0e6;border-radius:7px;font-size:10px;font-weight:700;line-height:1;letter-spacing:.35px;background:linear-gradient(180deg,#f8fafb,#edf0f3);color:#687581;box-shadow:inset 0 1px 0 rgb(255 255 255 / .9),0 1px 2px rgb(28 51 70 / .06)}
#switchManagementPanel .switch-inventory-table .olt-up.active{background:linear-gradient(180deg,#f4fcf7,#e6f5ec);border-color:#c4e3d1;color:#18734d}
#switchManagementPanel .switch-inventory-table .olt-down.active{background:linear-gradient(180deg,#fff8f8,#fce9e9);border-color:#edc8c9;color:#b63e40}
#switchManagementPanel .switch-inventory-table .olt-updown>span:before,#switchManagementPanel .switch-inventory-table .olt-inactive-status:before{content:"";width:6px;height:6px;background:currentColor;border-radius:50%;flex:none}
#switchManagementPanel .switch-inventory-table .olt-up.active:before{box-shadow:0 0 0 3px rgb(24 115 77 / .09)}
#switchManagementPanel .switch-row-actions{align-items:center;gap:7px}
#switchManagementPanel .switch-row-actions button{width:28px;height:28px;line-height:28px;border:1px solid #d7e2ea;border-radius:5px;background:#fff;color:#486d85;font-size:15px;box-shadow:0 1px 2px rgb(28 51 70 / .04)}
#switchManagementPanel .switch-row-actions button:hover{background:#eaf3f9;border-color:#b9d0df}
#switchManagementPanel .switch-row-actions button[data-delete]{color:#b14b4f;border-color:#ebd5d7}
#switchManagementPanel .switch-row-actions button[data-open]{width:auto;min-width:62px;padding:0 9px;font-size:11px;font-weight:600;background:#f0f6fa}
@media(max-width:800px){#switchManagementPanel .switch-inventory-table{min-width:760px}#switchManagementPanel .switch-inventory-table td{padding:9px 10px}}

#switchManagementPanel .switch-row-actions{display:flex;justify-content:center;align-items:center;gap:7px}#switchManagementPanel .olt-management-content{box-sizing:border-box;width:100%;padding:18px}#switchManagementPanel .switch-inventory-table td:nth-child(1){width:24px}#switchManagementPanel .switch-inventory-table td:nth-child(2){width:54px}

#routerManagementPanel .device-sync-toolbar,#switchManagementPanel .device-sync-toolbar{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:10px}
.device-sync-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.device-sync-actions button{height:28px;padding:4px 11px;font-size:11px;border:1px solid #23465d;border-radius:6px;background:#23465d;color:#fff;white-space:nowrap}.device-sync-actions button:disabled{opacity:.5;cursor:wait}.device-auto-sync{font-size:10px;color:#337f5e;white-space:nowrap}
@media(max-width:600px){.device-sync-actions{margin-left:0;flex-wrap:wrap}.device-auto-sync{display:none}}

#switchManagementPanel .device-sync-actions{margin-left:0}#switchManagementPanel .device-sync-toolbar>label{margin-left:auto}#switchManagementPanel [data-switch-sync-all]{min-width:76px}@media(max-width:600px){#switchManagementPanel .device-sync-toolbar>label{margin-left:0}}

/* One consistent Auto Sync indicator across managed devices. */
#oltManagementPanel .olt-auto-label,#routerManagementPanel .device-auto-sync,#switchManagementPanel .device-auto-sync{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:28px;min-width:92px;padding:0 11px;border:1px solid #c5e2d3;border-radius:6px;background:linear-gradient(180deg,#f5fcf8,#e7f5ed);color:#26754f;font-size:10px;font-weight:600;line-height:1;white-space:nowrap;box-shadow:inset 0 1px 0 #ffffff,0 1px 2px rgb(28 51 70 / .05)}
#switchManagementPanel .switch-auto-sync{margin-left:4px;order:5}
#routerManagementPanel .device-auto-sync{order:5;margin-left:4px}
#oltManagementPanel .olt-auto-label{order:5;margin-left:4px}
@media(max-width:600px){#oltManagementPanel .olt-auto-label,#routerManagementPanel .device-auto-sync,#switchManagementPanel .device-auto-sync{display:inline-flex;min-width:82px;padding:0 8px}}

#oltManagementPanel .olt-toolbar{display:flex;align-items:center;gap:10px}#oltManagementPanel .olt-toolbar>div:first-child:not(.olt-toolbar-actions){display:none}#oltManagementPanel .olt-toolbar-actions{display:flex;flex:1;margin-left:0;gap:10px;flex-wrap:wrap}#oltManagementPanel .olt-toolbar-actions [data-add]{order:-2}#oltManagementPanel .olt-toolbar-actions [data-sync-selected]{order:-1}#oltManagementPanel .olt-toolbar-actions .olt-auto-label{margin-left:auto}

#oltManagementPanel .olt-toolbar-actions{flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;flex-wrap:nowrap!important;width:100%;min-width:0}
#oltManagementPanel .olt-toolbar-actions button{display:inline-flex!important;align-items:center;justify-content:center;flex:0 0 auto!important;width:auto!important;min-width:0!important;max-width:max-content!important;height:28px!important;min-height:28px!important;padding:4px 10px!important;border-radius:6px!important;font-size:10px!important;line-height:18px!important;white-space:nowrap}
#oltManagementPanel .olt-toolbar-actions .olt-auto-label{flex:0 0 auto;min-width:82px;margin-left:auto}
@media(max-width:480px){#oltManagementPanel .olt-toolbar{padding:9px!important}#oltManagementPanel .olt-toolbar-actions{gap:6px}#oltManagementPanel .olt-toolbar-actions button{padding:4px 7px!important;font-size:9px!important}#oltManagementPanel .olt-toolbar-actions .olt-auto-label{min-width:72px;padding:0 6px;font-size:9px}}

/* BDCOM P3600-16E front-panel layout, based on the supplied device image. */
#oltManagementPanel .bdcom-p3600-face{padding:14px!important;background:#f7fafc!important;border:1px solid #d8e3eb;border-radius:9px;color:#23465d}
.bdcom-face-title{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.bdcom-face-title h4{margin:0;color:#23465d;font-size:12px}.bdcom-face-title>span{display:flex;align-items:center;gap:6px;font-size:9px;color:#637a8a}.bdcom-face-title i{width:6px;height:6px;border-radius:50%;display:inline-block;margin-left:7px;background:#9da9b1}.bdcom-face-title i.up{background:#289c64}.bdcom-face-title i.down{background:#cf575a}
.bdcom-face-scroll{width:100%;overflow-x:auto;padding-bottom:5px}.bdcom-chassis{min-width:940px;border:2px solid #4c565e;border-radius:3px;background:#e6ebef;box-shadow:0 4px 8px #173b5518;overflow:hidden}.bdcom-vent{height:15px;background:repeating-linear-gradient(90deg,#1d292f 0 6px,#637078 6px 9px);border-bottom:4px solid #222e35}
.bdcom-front{position:relative;display:flex;align-items:flex-end;justify-content:space-between;gap:18px;min-height:128px;padding:30px 18px 12px;background:linear-gradient(113deg,#f8fafb 0%,#fff 64%,#eef4f8 64.2%,#dae8f1 80%,#f6f9fb 80.2%);box-sizing:border-box}
.bdcom-brand{position:absolute;right:155px;top:7px;display:flex;align-items:baseline;gap:8px;color:#163d56}.bdcom-brand strong{font-style:italic;font-size:19px;letter-spacing:1.5px}.bdcom-brand small{font-size:9px;letter-spacing:.4px}
.bdcom-console{display:flex;flex-direction:column;align-items:center;gap:7px;width:94px;flex:none;margin-bottom:4px}.bdcom-led-caption{font-size:8px;letter-spacing:1px;color:#586c76}.bdcom-console-label{font-size:8px;background:#25333c;color:#fff;padding:2px 10px}.bdcom-console-socket{width:29px;height:23px;background:linear-gradient(#101b21 70%,#7a858b 71%);border:3px solid #7e8b93;box-shadow:inset 0 0 0 2px #d4dade}
.bdcom-pon-groups{display:flex;gap:22px;flex:none}.bdcom-pon-bank,.bdcom-tenge-bank{display:flex;gap:5px;padding:5px;background:#b9c3c9;border:1px solid #7c898f;flex:none}.bdcom-tenge-bank{gap:8px}.bdcom-port-pair{display:flex;flex-direction:column;gap:5px}.bdcom-port{display:flex;flex-direction:column;align-items:center;gap:3px;flex:none;position:relative}.bdcom-port-name{font-size:8px;font-weight:600;color:#354e5d;line-height:10px}.bdcom-port-pair>.bdcom-port:first-child{flex-direction:column-reverse}.bdcom-socket{position:relative;display:block;width:27px;height:22px;background:#16262e;border:2px solid #7b8a91;box-shadow:inset 0 0 0 1px #c1cacf;box-sizing:border-box}.bdcom-contact{position:absolute;left:6px;right:6px;bottom:3px;height:4px;background:repeating-linear-gradient(90deg,#b7aa70 0 2px,#27343b 2px 4px)}.bdcom-socket>i{position:absolute;right:2px;top:2px;width:4px;height:4px;border-radius:50%;background:#87969e}.bdcom-port.up .bdcom-socket>i{background:#45d383;box-shadow:0 0 3px #45d383}.bdcom-port.down .bdcom-socket>i{background:#ef6266}.bdcom-port.up .bdcom-socket{border-color:#3d9165}.bdcom-port.down .bdcom-socket{border-color:#b06e70}
.bdcom-copper-bank,.bdcom-optical-bank{display:flex;gap:4px;flex:none;align-items:flex-end;margin-bottom:1px;padding:5px;border:1px solid #839199;background:#c2cbd1}.bdcom-copper-bank .bdcom-port,.bdcom-optical-bank .bdcom-port{flex-direction:column-reverse}.bdcom-copper-bank .bdcom-socket{width:31px;height:25px;clip-path:polygon(0 0,100% 0,100% 76%,75% 76%,75% 100%,25% 100%,25% 76%,0 76%)}
@media(max-width:600px){#oltManagementPanel .bdcom-p3600-face{padding:10px!important}.bdcom-face-title{align-items:flex-start}.bdcom-brand{right:145px}}

.olt-onu-view-tabs{display:flex;gap:6px;margin:12px 0 0;padding:5px 5px 0;border:1px solid #d7e3ec;border-bottom:0;border-radius:7px 7px 0 0;background:#eef4f8}.olt-onu-view-tabs [role=tab]{min-height:32px;padding:7px 18px;border:1px solid transparent;border-radius:5px 5px 0 0;background:transparent;color:#56758b;font-size:11px;font-weight:600;cursor:pointer}.olt-onu-view-tabs [aria-selected=true]{background:#fff;border-color:#d7e3ec;border-bottom-color:#fff;color:#23465d}.olt-opm-panel{padding:14px;background:#fff;border:1px solid #d7e3ec;border-radius:0 0 7px 7px}.olt-opm-panel[hidden],.olt-onu-inventory[hidden]{display:none!important}

.onu-lan-speed{display:inline-flex;align-items:center;min-height:23px;padding:2px 8px;border:1px solid #d6e3ed;border-radius:5px;background:#f1f6fa;color:#365e79;font-size:10px;line-height:16px;white-space:nowrap}

/* Compact ONU inventory without shrinking readable text. */
#oltManagementPanel .olt-onu-inventory{padding:10px 12px}
#oltManagementPanel .olt-onu-inventory>.olt-system-head{margin:0 0 7px;gap:8px;min-height:28px}
#oltManagementPanel .olt-onu-inventory h4{margin:0;font-size:12px}
#oltManagementPanel .olt-onu-inventory .olt-port-note{margin:5px 0;line-height:1.35}
#oltManagementPanel .olt-onu-controls{gap:7px;margin:7px 0;align-items:flex-end}
#oltManagementPanel .olt-onu-controls label{gap:3px;font-size:10px}
#oltManagementPanel .olt-onu-controls input,#oltManagementPanel .olt-onu-controls select{height:28px;min-height:28px;padding:4px 7px;font-size:11px}
#oltManagementPanel .olt-onu-controls button{height:28px;min-height:28px;padding:4px 9px;font-size:10px}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th,#oltManagementPanel .olt-onu-inventory .olt-port-scroll td{padding:6px 9px;line-height:1.35;font-size:11px;vertical-align:middle}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th{height:30px;font-weight:600}
#oltManagementPanel .olt-onu-inventory .onu-lan-speed{min-height:19px;padding:0 6px;font-size:10px;line-height:17px}
#oltManagementPanel .olt-onu-view-tabs{margin-top:8px;padding-top:3px;gap:4px}
#oltManagementPanel .olt-onu-view-tabs [role=tab]{min-height:28px;padding:5px 13px;font-size:11px}
#oltManagementPanel .olt-onu-inventory .olt-onu-result,#oltManagementPanel .olt-onu-inventory .olt-error{margin:5px 0;padding:6px 8px}
@media(max-width:800px){#oltManagementPanel .olt-onu-inventory{padding:8px}#oltManagementPanel .olt-onu-inventory .olt-port-scroll td,#oltManagementPanel .olt-onu-inventory .olt-port-scroll th{padding:5px 7px}}

/* Dense bordered ONU grid. */
#oltManagementPanel .olt-onu-inventory{padding:8px 10px}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll{border:1px solid #cbdbe6;border-radius:6px;overflow:auto;background:#fff}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll table{border-collapse:separate;border-spacing:0;width:100%}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th,#oltManagementPanel .olt-onu-inventory .olt-port-scroll td{padding:4px 7px;line-height:1.3;border-right:1px solid #d8e3eb;border-bottom:1px solid #dde7ee;vertical-align:middle}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th{height:27px;box-sizing:border-box;background:#e9f1f7;color:#345970;font-size:10px;font-weight:600}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th:last-child,#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:last-child{border-right:0}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll tbody tr:last-child td{border-bottom:0}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll tbody tr:nth-child(even){background:#f7fafc}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll tbody tr:hover{background:#edf5fb}
#oltManagementPanel .olt-onu-inventory .olt-onu-controls{padding:7px;gap:5px;margin:6px 0;border:1px solid #d7e3ec;border-radius:6px;background:#f7fafc}
#oltManagementPanel .olt-onu-inventory .olt-onu-controls input,#oltManagementPanel .olt-onu-inventory .olt-onu-controls select,#oltManagementPanel .olt-onu-inventory .olt-onu-controls button{height:26px;min-height:26px;padding:3px 6px}
#oltManagementPanel .olt-onu-inventory .onu-lan-speed{min-height:17px;line-height:15px;border-radius:4px;padding:0 5px}

/* Reserve more ONU inventory space for the subscriber description. */
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th:nth-child(5),#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(5){width:90px;min-width:76px;max-width:110px;padding-left:5px;padding-right:5px;text-align:center}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(5) .onu-lan-speed{max-width:96px;white-space:normal;overflow-wrap:anywhere;box-sizing:border-box}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th:nth-child(6),#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(6){width:36%;min-width:240px;text-align:left;white-space:normal;overflow-wrap:anywhere}

#oltManagementPanel .olt-onu-inventory .olt-port-scroll th:nth-child(4),#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(4){width:105px;min-width:90px;white-space:nowrap}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th:nth-child(5),#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(5){width:120px;min-width:110px;max-width:145px}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(5) .onu-lan-speed{max-width:132px}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th:nth-child(7),#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(7){width:155px;min-width:135px;white-space:normal;overflow-wrap:anywhere}

#oltManagementPanel .olt-onu-inventory .olt-port-scroll th:nth-child(6),#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(6){width:25%;min-width:190px}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th:nth-child(4),#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(4){width:115px;min-width:100px}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th:nth-child(5),#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(5){width:130px;min-width:120px;max-width:155px}
#oltManagementPanel .olt-onu-inventory .olt-port-scroll th:nth-child(7),#oltManagementPanel .olt-onu-inventory .olt-port-scroll td:nth-child(7){width:170px;min-width:150px}

/* Separate OLT connectivity and ONU optical alarm groups. */
.olt-add-dialog .olt-alarm-separated{display:flex;flex-direction:column;gap:12px}
.olt-add-dialog .olt-alarm-shared{padding:12px;border:1px solid #d5e2ec;border-radius:8px;background:#f7fafc}
.olt-add-dialog .olt-alarm-shared .olt-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}
.olt-add-dialog .olt-alarm-shared .olt-form-grid>.olt-alert-recipient{grid-column:auto}
.olt-add-dialog .olt-alarm-group-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.olt-add-dialog .olt-alarm-group{min-width:0;border:1px solid #cfdfeb;border-radius:8px;background:#fff;padding:12px;display:flex;flex-direction:column;gap:10px}
.olt-add-dialog .olt-alarm-group h3{margin:0;padding:0 0 9px;border-bottom:1px solid #e0e9f0;font-size:13px;color:#315d78}
.olt-add-dialog .olt-alarm-group>.olt-alarm-message-card{padding:0!important;border:0!important;border-radius:0;background:transparent}
.olt-add-dialog .olt-alarm-group>label:not(.olt-alert-switch){display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:600;color:#496175}
.olt-add-dialog .olt-alarm-group [name=powerAlertLimit]{height:32px;box-sizing:border-box;width:100%;padding:6px 9px;border:1px solid #d0dfeb;border-radius:5px}
.olt-add-dialog .olt-alarm-group textarea{min-height:135px;box-sizing:border-box;width:100%;resize:vertical}
.olt-add-dialog .olt-alarm-group .olt-alert-switch{align-self:flex-start;margin:0}
.olt-add-dialog .olt-alarm-group .olt-notice{margin:0;font-size:10px}
@media(max-width:700px){.olt-add-dialog .olt-alarm-group-grid,.olt-add-dialog .olt-alarm-shared .olt-form-grid{grid-template-columns:1fr}}

.olt-add-dialog .olt-alarm-group [name=oltDownAlertInterval],.olt-add-dialog .olt-alarm-group [name=powerAlertInterval]{height:32px;box-sizing:border-box;width:100%;padding:6px 9px;border:1px solid #d0dfeb;border-radius:5px;background:#f9fbfd;font-size:12px}

/* Reduce empty space above the separate alarm groups. */
.olt-add-dialog:has(.olt-alarm-separated){padding:15px 18px;max-height:calc(100dvh - 28px)}
.olt-add-dialog:has(.olt-alarm-separated)>.dialoghead,.olt-add-dialog:has(.olt-alarm-separated) form>.dialoghead{margin-bottom:8px;padding-bottom:7px;min-height:0}
.olt-add-dialog:has(.olt-alarm-separated) .olt-form-tabs{margin-top:5px;margin-bottom:10px}
.olt-add-dialog:has(.olt-alarm-separated) .olt-form-tabs [role=tab]{padding:7px 12px;min-height:30px}
.olt-add-dialog .olt-power-alert-fields:has(.olt-alarm-separated){padding:9px 10px;margin-top:0}
.olt-add-dialog .olt-alarm-separated{gap:9px}
.olt-add-dialog .olt-alarm-shared{padding:9px 10px}
.olt-add-dialog .olt-alarm-shared .olt-form-grid{gap:7px 12px}
.olt-add-dialog .olt-alarm-shared .olt-form-grid label{gap:4px;font-size:11px}
.olt-add-dialog .olt-alarm-shared .olt-form-grid input,.olt-add-dialog .olt-alarm-shared .olt-form-grid select{height:30px;min-height:30px;padding:5px 9px;font-size:12px}
.olt-add-dialog .olt-alarm-shared .olt-secret-field input{padding-right:36px}
.olt-add-dialog .olt-alarm-shared .olt-secret-field button{height:26px;width:28px;top:2px;right:2px}
.olt-add-dialog .olt-alarm-shared small{font-size:10px;line-height:1.35}
.olt-add-dialog .olt-alarm-shared .olt-notice{margin:5px 0 0;padding:0;font-size:10px;line-height:1.4}
.olt-add-dialog .olt-alarm-group-grid{gap:9px}
.olt-add-dialog .olt-alarm-group{padding:10px;gap:7px}
.olt-add-dialog .olt-alarm-group h3{padding-bottom:7px;font-size:12px}
.olt-add-dialog .olt-alarm-group>.olt-alert-switch{padding:5px 8px;min-height:25px}
.olt-add-dialog .olt-alarm-group [name=powerAlertLimit],.olt-add-dialog .olt-alarm-group [name=powerAlertInterval],.olt-add-dialog .olt-alarm-group [name=oltDownAlertInterval]{height:29px;padding:4px 8px}
.olt-add-dialog .olt-alarm-group textarea{min-height:112px;padding:7px;font-size:11px;line-height:1.45}
.olt-add-dialog .olt-alarm-group .olt-alert-message-preview{margin-top:5px}

/* Keep map load failures visible when the mobile layer drawer is closed. */
#mapLoadNotice{position:absolute;z-index:650;left:50%;bottom:45px;transform:translateX(-50%);width:max-content;max-width:calc(100% - 24px);box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid #d5e1eb;border-radius:8px;background:#fffffff5;color:#314e62;box-shadow:0 3px 14px #18354b22;font-size:12px;line-height:1.5}
#mapLoadNotice[hidden]{display:none}
#mapLoadNotice button{flex:none;padding:6px 10px;font-size:12px}

#routerManagementPanel .router-user-paging{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:9px 11px;margin:10px 0;border:1px solid #d7e3ed;border-radius:7px;background:#fff;font-size:12px;color:#416076}
#routerManagementPanel .router-user-paging label,#routerManagementPanel .router-user-paging>div{display:flex;align-items:center;gap:8px}
#routerManagementPanel .router-user-paging select,#routerManagementPanel .router-user-paging button{padding:6px 10px;border-radius:5px;font-size:12px}
#routerManagementPanel .router-user-paging button:disabled{opacity:.45;cursor:default}

/* Compact PPP user rows without changing the router inventory table. */
#routerManagementPanel [data-router-users] .olt-port-scroll table{margin:0;font-size:11px;border-collapse:collapse}
#routerManagementPanel [data-router-users] .olt-port-scroll th,#routerManagementPanel [data-router-users] .olt-port-scroll td{padding:4px 7px;line-height:1.3;vertical-align:middle;border-right:1px solid #e0e8ee;border-bottom:1px solid #e4ebf1}
#routerManagementPanel [data-router-users] .olt-port-scroll th{height:27px;font-size:10px}
#routerManagementPanel [data-router-users] .olt-port-scroll tbody tr:nth-child(even){background:#f5f9fc}
#routerManagementPanel [data-router-users] .olt-port-state{min-height:17px;padding:1px 6px;font-size:10px;line-height:15px}
#routerManagementPanel [data-router-users] .router-user-tabs{gap:8px;margin:10px 0}
#routerManagementPanel [data-router-users] .router-user-paging{padding:6px 9px;margin:7px 0}

#routerManagementPanel [data-router-user]{cursor:pointer}
#routerManagementPanel [data-router-users] .olt-port-scroll tbody tr:hover>td{background:#e3f1fc;color:#184d70}
#routerManagementPanel [data-router-users] .olt-port-scroll tbody tr.router-user-selected>td{background:#cce8fa;color:#123f62;border-bottom-color:#a8cfe8}
#routerManagementPanel [data-router-user]:hover>td:first-child,#routerManagementPanel [data-router-user].router-user-selected>td:first-child{box-shadow:inset 3px 0 #2987c1;font-weight:600}
#routerManagementPanel [data-router-user]:focus-visible{outline:2px solid #2987c1;outline-offset:-2px}

.olt-add-dialog .olt-alarm-group [name=oltDownTelegramChat],.olt-add-dialog .olt-alarm-group [name=powerAlertTelegramChat]{height:30px;box-sizing:border-box;width:100%;padding:5px 9px;border:1px solid #d0dfeb;border-radius:5px;background:#f9fbfd;font-size:12px}

#oltManagementPanel .olt-onu-paging{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:6px 9px;margin:7px 0;border:1px solid #d7e3ed;border-radius:6px;background:#fff;font-size:11px;color:#416076}
#oltManagementPanel .olt-onu-paging label,#oltManagementPanel .olt-onu-paging>div{display:flex;align-items:center;gap:8px}
#oltManagementPanel .olt-onu-paging select,#oltManagementPanel .olt-onu-paging button{padding:5px 9px;font-size:11px;border-radius:5px}
#oltManagementPanel .olt-onu-paging button:disabled{opacity:.45;cursor:default}
