#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:34px}.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 34px}.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:110px}.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:110px}.join-box-dialog .join-core-table-row .join-core-note{left:-144px;width:110px;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:110px}

.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}
#oltManagementPanel .olt-onu-controls>[data-delete-offline]:not(:disabled){background:#fff2f0;border-color:#efcfca;color:#ad5045;font-weight:600}
#oltManagementPanel .olt-onu-controls>[data-delete-offline]:not(:disabled):hover{background:#fbe5e1;border-color:#dbaaa2;color:#914237}
#oltManagementPanel .olt-onu-controls>[data-delete-offline]:disabled{background:#f3f5f7;border-color:#dce3e8;color:#87949f;opacity:1}

.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:row;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:10px;margin-bottom:12px;overflow-x:auto}
#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]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;height:28px;box-sizing:border-box;padding:4px 11px;font-size:11px;line-height:18px;white-space:nowrap;border-radius:6px;margin:0}
#routerManagementPanel .olt-management-content>.olt-toolbar .device-sync-actions{flex:0 0 auto;flex-wrap:nowrap;margin-left:auto}
.router-sync-settings{width:min(400px,calc(100vw - 30px));box-sizing:border-box;border:1px solid #cadbe5;border-radius:9px;padding:20px;color:#31566c;background:#fff}.router-sync-settings::backdrop{background:#173b5544}.router-sync-settings form{display:grid;gap:16px}.router-sync-settings h2{font-size:16px;margin:0}.router-sync-settings label{display:grid;gap:7px;font-size:12px}.router-sync-settings .router-sync-enabled{display:flex;align-items:center;gap:8px}.router-sync-interval{display:flex;gap:8px}.router-sync-interval input,.router-sync-interval select{min-width:0;box-sizing:border-box;flex:1;padding:8px;border:1px solid #cbdde8;border-radius:5px;color:inherit;background:#fff}.router-sync-settings p{font-size:11px;line-height:1.5;color:#6b8290;margin:0}#routerManagementPanel .device-auto-sync.is-paused{background:#f1f3f5;color:#75818b;border-color:#d5dce1;cursor:pointer}#routerManagementPanel button.device-auto-sync{cursor:pointer}
:is(#switchManagementPanel,#powerSystemPanel) .olt-management-content{padding:20px;max-width:1400px;margin:auto}
:is(#switchManagementPanel,#powerSystemPanel) .olt-toolbar{justify-content:space-between;gap:12px}
:is(#switchManagementPanel,#powerSystemPanel) .olt-toolbar label{display:flex;gap:8px;align-items:center;font-size:12px;color:#5d798d}
:is(#switchManagementPanel,#powerSystemPanel) .olt-toolbar input{border:1px solid #d0dfeb;border-radius:7px;padding:8px 10px;font-size:12px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions{display:flex;gap:6px;white-space:nowrap}
:is(#switchManagementPanel,#powerSystemPanel) .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 [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){:is(#switchManagementPanel,#powerSystemPanel) .olt-toolbar{align-items:flex-start;flex-direction:column}:is(#switchManagementPanel,#powerSystemPanel) .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,:is(#switchManagementPanel,#powerSystemPanel) .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. */
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-scroll{border-color:#d6e1e9;border-radius:7px;overflow:hidden;box-shadow:0 2px 8px rgb(28 51 70 / .04)}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table{width:100%;font-size:11px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table th{height:38px;background:#23465d;color:#fff;border-right:1px solid #627e91;font-size:11px;font-weight:500;letter-spacing:.1px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table td{padding:11px 14px;border-right:1px solid #dfe7ed;border-bottom:1px solid #e5ecf1;vertical-align:middle}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table th:last-child,:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table td:last-child{border-right:0}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table tbody tr:nth-child(even){background:#f7fafc}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table tbody tr:hover{background:#edf5fa}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table td:nth-child(6){width:108px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table td:last-child{width:220px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table .olt-updown>span,:is(#switchManagementPanel,#powerSystemPanel) .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)}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table .olt-up.active{background:linear-gradient(180deg,#f4fcf7,#e6f5ec);border-color:#c4e3d1;color:#18734d}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table .olt-down.active{background:linear-gradient(180deg,#fff8f8,#fce9e9);border-color:#edc8c9;color:#b63e40}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table .olt-updown>span:before,:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table .olt-inactive-status:before{content:"";width:6px;height:6px;background:currentColor;border-radius:50%;flex:none}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table .olt-up.active:before{box-shadow:0 0 0 3px rgb(24 115 77 / .09)}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions{align-items:center;gap:7px}
:is(#switchManagementPanel,#powerSystemPanel) .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)}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions button:hover{background:#eaf3f9;border-color:#b9d0df}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions button[data-delete]{color:#b14b4f;border-color:#ebd5d7}
:is(#switchManagementPanel,#powerSystemPanel) .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){:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table{min-width:760px}:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table td{padding:9px 10px}}

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

#routerManagementPanel .device-sync-toolbar,:is(#switchManagementPanel,#powerSystemPanel) .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}}

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

/* One consistent Auto Sync indicator across managed devices. */
#oltManagementPanel .olt-auto-label,#routerManagementPanel .device-auto-sync,:is(#switchManagementPanel,#powerSystemPanel) .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)}
:is(#switchManagementPanel,#powerSystemPanel) .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,:is(#switchManagementPanel,#powerSystemPanel) .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{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:10px;padding:5px;gap:5px;background:#f5f7f9;border:1px solid #dce4e9;border-radius:9px 9px 0 0}
#oltManagementPanel .olt-onu-view-tabs [role=tab]{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0;min-height:36px;padding:7px 12px;font-size:11px;line-height:1.3}
#oltManagementPanel .olt-onu-view-tabs [data-onu-tab]{border:1px solid transparent;background:var(--tab-tint);color:var(--tab-ink);border-radius:6px;transition:background .15s,box-shadow .15s}
#oltManagementPanel [data-onu-tab=list]{--tab-color:#587ca1;--tab-tint:#eef3f9;--tab-active:#e0eaf6;--tab-border:#c2d1e1;--tab-ink:#365571}
#oltManagementPanel [data-onu-tab=opm]{--tab-color:#877090;--tab-tint:#f4f0f7;--tab-active:#ebe3f1;--tab-border:#d4c8dd;--tab-ink:#65516f}
#oltManagementPanel [data-onu-tab=ports]{--tab-color:#4f806c;--tab-tint:#edf5f0;--tab-active:#dfede5;--tab-border:#bfd6c8;--tab-ink:#365f4d}
#oltManagementPanel .olt-onu-view-tabs [data-onu-tab]:hover{background:var(--tab-active)}
#oltManagementPanel .olt-onu-view-tabs [data-onu-tab][aria-selected=true]{background:var(--tab-active);border-color:var(--tab-border);color:var(--tab-ink);box-shadow:inset 0 -3px 0 var(--tab-color),0 1px 3px #2034480c}
#oltManagementPanel .olt-tab-icon{display:grid;place-items:center;flex:0 0 23px;width:23px;height:23px;border-radius:6px;background:#ffffffa6;color:var(--tab-color)}
#oltManagementPanel .olt-tab-icon svg{display:block;width:15px;height:15px}
@media(max-width:560px){#oltManagementPanel .olt-onu-view-tabs [role=tab]{padding:6px 4px;gap:4px;font-size:10px}#oltManagementPanel .olt-tab-icon{display:none}}
#oltManagementPanel .olt-onu-view-tabs [data-onu-tab]:focus-visible{outline:2px solid var(--tab-color);outline-offset:2px}
#oltManagementPanel .olt-port-information{padding:12px;border:1px solid #d4e0d9;border-top:2px solid #9cbeab;border-radius:0 0 7px 7px;background:#fff}
#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 > label[data-message-channel=telegram]{color:#315d78}
.olt-add-dialog .olt-alarm-group > label[data-message-channel=telegram] > input{
  height:32px;
  width:100%;
  box-sizing:border-box;
  padding:5px 9px;
  border:1px solid #c6daeb;
  border-radius:5px;
  background:#f0f6fc;
  color:#234b6c;
  font-size:12px;
}
.olt-add-dialog .olt-alarm-group .olt-interval-controls > :is(input,select){
  height:32px;
  padding:5px 9px;
  border:1px solid #d0dfeb;
  border-radius:5px;
  background:#f9fbfd;
  color:#31546f;
  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}

.router-sync-settings .router-form-actions{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:8px}.router-sync-settings .router-form-actions button{width:auto;flex:0 0 auto;min-height:34px;margin:0;white-space:nowrap}

.router-sync-settings [data-sync-cancel]{background:#fff0e9;border:1px solid #e5b6a1;color:#a45231;border-radius:6px;padding:7px 13px;font-weight:600}.router-sync-settings [data-sync-cancel]:hover{background:#fbe1d5;border-color:#ce967c}.router-sync-settings .router-form-actions .primary{background:#2f876b;border:1px solid #28775e;color:#fff;border-radius:6px;padding:7px 13px;font-weight:600}.router-sync-settings .router-form-actions .primary:hover{background:#266f58}.router-sync-settings .router-form-actions button:focus-visible{outline:2px solid #508db5;outline-offset:2px}

#oltManagementPanel button.olt-auto-label{background:linear-gradient(180deg,#f5fcf8,#e7f5ed)!important;border-color:#c5e2d3!important;color:#26754f!important;cursor:pointer}#oltManagementPanel button.olt-auto-label.is-paused,:is(#switchManagementPanel,#powerSystemPanel) button.device-auto-sync.is-paused{background:#f1f3f5!important;color:#75818b!important;border-color:#d5dce1!important}:is(#switchManagementPanel,#powerSystemPanel) button.device-auto-sync{cursor:pointer}:is(#switchManagementPanel,#powerSystemPanel) [data-switch-sync-selected]{min-width:100px}
:is(#routerManagementPanel,#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-management-content>.olt-toolbar.device-sync-toolbar{display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:10px;padding:0;margin:0 0 12px;border:0;background:transparent;overflow-x:auto}
:is(#routerManagementPanel,#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-sync-toolbar>.device-sync-actions{display:flex;flex:0 0 auto;align-items:center;flex-wrap:nowrap;gap:8px;margin-left:auto}
:is(#routerManagementPanel,#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-sync-toolbar button{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;flex:0 0 auto;min-width:0;width:auto;height:28px;min-height:28px;padding:4px 11px;margin:0;border-radius:6px;font-size:11px;line-height:18px;white-space:nowrap}
:is(#routerManagementPanel,#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-sync-toolbar>button{color:#fff;background:#2b7fa6;border:1px solid #2b7fa6}
:is(#routerManagementPanel,#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-sync-actions>button:not(.device-auto-sync){order:0;color:#fff;background:#23465d;border:1px solid #23465d}
:is(#routerManagementPanel,#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-sync-actions>.device-auto-sync{order:1;margin-left:4px;min-width:92px;font-size:10px}
.switch-search-toolbar{display:flex;justify-content:flex-end;margin-bottom:10px}.switch-search-toolbar label{display:flex;align-items:center;gap:8px;font-size:12px;color:#5d798d}.switch-search-toolbar input{border:1px solid #d0dfeb;border-radius:7px;padding:8px 10px;font-size:12px;max-width:50vw}

:is(#switchManagementPanel,#powerSystemPanel) .olt-management-head .switch-header-search{display:flex;align-items:center;flex:0 1 270px;margin-left:auto;margin-right:12px;min-width:80px}:is(#switchManagementPanel,#powerSystemPanel) .switch-header-search input{box-sizing:border-box;width:100%;min-width:0;height:30px;border:1px solid #cbdde8;border-radius:6px;padding:5px 10px;background:#fff;color:#31566c;font-size:11px}:is(#switchManagementPanel,#powerSystemPanel) .switch-header-search .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

:is(#switchManagementPanel,#powerSystemPanel) .olt-management-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(80px,270px) minmax(0,1fr);align-items:center;gap:12px}:is(#switchManagementPanel,#powerSystemPanel) .olt-management-head>.switch-header-search{width:100%;min-width:0;margin:0}:is(#switchManagementPanel,#powerSystemPanel) .olt-management-head>[data-close]{justify-self:end}@media(max-width:480px){:is(#switchManagementPanel,#powerSystemPanel) .olt-management-head{grid-template-columns:minmax(55px,1fr) minmax(80px,180px) minmax(30px,1fr);gap:8px}}

:is(#switchManagementPanel,#powerSystemPanel) .olt-management-content{padding-top:8px;padding-bottom:8px}:is(#switchManagementPanel,#powerSystemPanel) .olt-management-content>.olt-toolbar.device-sync-toolbar{margin-bottom:6px}:is(#switchManagementPanel,#powerSystemPanel) [data-error]{margin:4px 0;font-size:11px;line-height:1.3}:is(#switchManagementPanel,#powerSystemPanel) [data-error]:empty{display:none}

:is(#switchManagementPanel,#powerSystemPanel) .olt-management-content{padding-top:8px}:is(#switchManagementPanel,#powerSystemPanel) .olt-management-content>.olt-toolbar.device-sync-toolbar{margin-top:0;margin-bottom:8px;padding-top:0;padding-bottom:0}:is(#switchManagementPanel,#powerSystemPanel) [data-switch-list],:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-scroll{margin-top:0;padding-top:0}:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table{margin-top:0;margin-bottom:0}

#routerManagementPanel .olt-management-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(80px,270px) minmax(0,1fr);align-items:center;gap:12px}#routerManagementPanel .router-header-search{display:flex;align-items:center;width:100%;min-width:0;margin:0}#routerManagementPanel .router-header-search input{box-sizing:border-box;width:100%;min-width:0;height:30px;border:1px solid #cbdde8;border-radius:6px;padding:5px 10px;background:#fff;color:#31566c;font-size:11px}#routerManagementPanel .olt-management-head>.ui-close-control{justify-self:end}#routerManagementPanel [data-router-search-empty]{font-size:12px;color:#6b8290;padding:10px}@media(max-width:480px){#routerManagementPanel .olt-management-head{grid-template-columns:minmax(55px,1fr) minmax(80px,180px) minmax(30px,1fr);gap:8px}}

#routerManagementPanel .olt-management-content{padding-top:8px;padding-bottom:8px}#routerManagementPanel .olt-management-content>.olt-toolbar.device-sync-toolbar{margin-top:0;margin-bottom:8px;padding-top:0;padding-bottom:0}#routerManagementPanel [data-router-message]{margin:4px 0;font-size:11px;line-height:1.3}#routerManagementPanel [data-router-message]:empty{display:none}#routerManagementPanel [data-router-list],#routerManagementPanel .router-inventory-scroll{margin-top:0;padding-top:0}#routerManagementPanel .router-inventory-table{margin-top:0;margin-bottom:0}

#oltManagementPanel .olt-management-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(80px,270px) minmax(0,1fr);align-items:center;gap:12px}#oltManagementPanel .olt-header-search{display:flex;align-items:center;width:100%;min-width:0;margin:0}#oltManagementPanel .olt-header-search input{box-sizing:border-box;width:100%;min-width:0;height:30px;border:1px solid #cbdde8;border-radius:6px;padding:5px 10px;background:#fff;color:#31566c;font-size:11px}#oltManagementPanel .olt-management-head>[data-close]{justify-self:end}#oltManagementPanel .olt-management-content{padding-top:8px;padding-bottom:8px}#oltManagementPanel .olt-management-content>.olt-toolbar.device-sync-toolbar{margin-top:0;margin-bottom:8px;padding-top:0;padding-bottom:0}#oltManagementPanel .olt-error:empty{display:none}#oltManagementPanel .olt-management-content>.olt-notice{margin:0 0 8px}@media(max-width:480px){#oltManagementPanel .olt-management-head{grid-template-columns:minmax(55px,1fr) minmax(80px,180px) minmax(30px,1fr);gap:8px}}

.olt-transfer-dialog{width:min(480px,calc(100vw - 28px))}.olt-transfer-dialog input[type=password],.olt-transfer-dialog input[type=file]{box-sizing:border-box;width:100%;padding:8px 10px;border:1px solid #cbdde8;border-radius:5px;background:#fff;color:#31566c}.olt-transfer-dialog input[type=file]{font-size:11px}.olt-transfer-dialog [data-transfer-error]{color:#b34848}.olt-transfer-dialog .router-form-actions{display:flex;gap:8px;justify-content:flex-end}#oltManagementPanel [data-olt-export][hidden],#oltManagementPanel [data-olt-import][hidden]{display:none!important}
#oltManagementPanel .olt-management-tabs{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid #dae5ed;background:#f5f9fc}
#oltManagementPanel .olt-management-tabs button{min-height:32px;padding:6px 17px;border:1px solid #cbdde8;border-radius:6px;background:#fff;color:#547287;font-size:12px;font-weight:600}
#oltManagementPanel .olt-management-tabs button[aria-selected=true]{background:#2b7fa6;border-color:#2b7fa6;color:#fff}
#oltManagementPanel .olt-management-tabs button:focus-visible{outline:2px solid #6aabc7;outline-offset:2px}
#oltManagementPanel .olt-add-feature-pane[hidden],#oltManagementPanel .olt-brand-model-pane[hidden],#oltManagementPanel .olt-header-search[hidden]{display:none!important}
#oltManagementPanel .olt-brand-model-pane{min-height:160px}
#oltManagementPanel #oltAddFeaturePane>.olt-toolbar.device-sync-toolbar{display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:10px;padding:0;margin:0 0 8px;border:0;background:transparent;overflow-x:auto}
#oltManagementPanel #oltAddFeaturePane>.olt-notice{margin:0 0 8px}
#oltManagementPanel.olt-detail-open #oltAddFeaturePane>.olt-toolbar.device-sync-toolbar{display:none}
@media(max-width:480px){#oltManagementPanel .olt-management-tabs{padding:7px 9px;gap:6px}#oltManagementPanel .olt-management-tabs button{padding:6px 11px;font-size:11px}}
#oltManagementPanel .olt-management-head{grid-template-columns:minmax(0,1fr) auto}
#oltManagementPanel .olt-table-controls{gap:12px;align-items:center}
#oltManagementPanel .olt-list-search{margin-left:auto;display:flex;align-items:center;min-width:0}
#oltManagementPanel .olt-list-search input{width:250px;max-width:42vw;height:30px;padding:5px 10px;border:1px solid #cbdde8;border-radius:5px;background:#fff;color:#31566c;font-size:11px}
#oltManagementPanel .olt-list-search[hidden]{display:none!important}
#oltManagementPanel .olt-management-tabs{gap:6px;padding:9px 12px;background:#edf3f7;border-bottom:1px solid #d8e4ec}
#oltManagementPanel .olt-management-tabs button{min-width:120px;min-height:36px;padding:7px 18px;border:1px solid #d0dfe8;border-radius:7px;background:#f8fbfd;color:#648092;font-size:12px;font-weight:600;box-shadow:none;transition:background .15s,color .15s,border-color .15s}
#oltManagementPanel .olt-management-tabs button:hover{background:#e5eff5;color:#315e78;border-color:#b7cedc}
#oltManagementPanel .olt-management-tabs button[aria-selected=true]{background:#24576f;border-color:#24576f;color:#fff;box-shadow:0 2px 4px #24576f16}
@media(max-width:480px){#oltManagementPanel .olt-management-tabs{padding:8px 9px}#oltManagementPanel .olt-management-tabs button{min-width:100px;min-height:33px;padding:6px 12px;font-size:11px}#oltManagementPanel .olt-list-search input{width:170px;max-width:42vw}}
#oltManagementPanel .olt-management-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px 12px;background:#edf3f7;border-bottom:1px solid #d8e4ec}
#oltManagementPanel .olt-management-tabs button{display:flex;align-items:center;justify-content:center;width:100%;min-width:0;min-height:48px;padding:12px 18px;border:1px solid #cbdde8;border-radius:8px;background:#fff;color:#5a788c;font-size:15px;font-weight:650;line-height:1.3;box-shadow:0 1px 2px #24465d05}
#oltManagementPanel .olt-management-tabs button[aria-selected=true]{background:#285f79;border-color:#285f79;color:#fff;box-shadow:0 2px 5px #24465d18}
#oltManagementPanel .olt-management-tabs button:hover:not([aria-selected=true]){background:#f3f8fb;border-color:#aac6d6;color:#315e78}
@media(max-width:480px){#oltManagementPanel .olt-management-tabs{gap:6px;padding:8px 9px}#oltManagementPanel .olt-management-tabs button{min-height:43px;padding:10px 12px;font-size:13px}}
#oltManagementPanel .olt-management-tabs{gap:0;padding:8px 12px 0;background:#f5f8fb;border-bottom:1px solid #d5e2ea}
#oltManagementPanel .olt-management-tabs button{position:relative;min-height:50px;border:1px solid transparent;border-bottom:0;border-radius:9px 9px 0 0;background:transparent;color:#718a9a;box-shadow:none;font-size:15px;letter-spacing:.1px;transition:background .15s,color .15s,border-color .15s}
#oltManagementPanel .olt-management-tabs button+button{margin-left:0}
#oltManagementPanel .olt-management-tabs button[aria-selected=true]{background:#fff;border-color:#d5e2ea;color:#245e78;box-shadow:0 -2px 7px #24465d04}
#oltManagementPanel .olt-management-tabs button[aria-selected=true]::after{content:'';position:absolute;left:24%;right:24%;bottom:0;height:3px;border-radius:3px 3px 0 0;background:#2d8991}
#oltManagementPanel .olt-management-tabs button:hover:not([aria-selected=true]){background:#eaf2f7;border-color:transparent;color:#3c6e87}
@media(max-width:480px){#oltManagementPanel .olt-management-tabs{padding:7px 9px 0}#oltManagementPanel .olt-management-tabs button{min-height:44px;font-size:13px}}
#oltManagementPanel .olt-management-tabs{background:#f3f5f7;border-bottom-color:#dce3e8}
#oltManagementPanel .olt-management-tabs button{color:#7a8995;font-weight:600;letter-spacing:.15px;border-radius:7px 7px 0 0}
#oltManagementPanel .olt-management-tabs button[aria-selected=true]{background:#fff;border-color:#dce3e8;color:#344f62;box-shadow:none}
#oltManagementPanel .olt-management-tabs button[aria-selected=true]::after{left:33%;right:33%;height:2px;background:#58778d}
#oltManagementPanel .olt-management-tabs button:hover:not([aria-selected=true]){background:#edf0f3;color:#516b7e}
#oltManagementPanel .olt-management-tabs button:focus-visible{outline:2px solid #8ba3b5;outline-offset:-4px}
#oltManagementPanel #oltAddFeaturePane>.device-sync-toolbar>[data-add]{height:32px;min-height:32px;padding:6px 14px;gap:7px;border:1px solid #b9cdd9;border-radius:6px;background:#eaf2f7;color:#315c75;font-size:11px;font-weight:650;line-height:18px;box-shadow:0 1px 2px #25465c08;transition:background .15s,border-color .15s,color .15s}
#oltManagementPanel #oltAddFeaturePane>.device-sync-toolbar>[data-add]:hover{background:#ddebf3;border-color:#92b4c9;color:#254d66}
#oltManagementPanel #oltAddFeaturePane>.device-sync-toolbar>[data-add]:active{background:#d2e4ef}
#oltManagementPanel #oltAddFeaturePane>.device-sync-toolbar>[data-add]:focus-visible{outline:2px solid #7198b1;outline-offset:2px}
/* Consistent restrained controls within OLT Management. */
#oltManagementPanel button:not([data-device-move]):not(.olt-onu-menu):not(.ui-close-control):not([role=tab]):not(.device-auto-sync):not(.olt-row-name):not(.olt-remove):not([data-delete-offline]):not(.opm-group-pick):not(.port-info-action){box-sizing:border-box;border:1px solid #b9cdd9;border-radius:6px;background:#eaf2f7;color:#315c75;font-size:11px;font-weight:600;line-height:18px;padding:5px 11px;box-shadow:0 1px 2px #25465c06;transition:background .15s,border-color .15s,color .15s}
#oltManagementPanel button:not([data-device-move]):not(.olt-onu-menu):not(.ui-close-control):not([role=tab]):not(.device-auto-sync):not(.olt-row-name):not(.olt-remove):not([data-delete-offline]):not(.opm-group-pick):not(.port-info-action):hover:not(:disabled){background:#ddebf3;border-color:#92b4c9;color:#254d66}
#oltManagementPanel button:focus-visible{outline:2px solid #7198b1;outline-offset:2px}
#oltManagementPanel button:disabled{opacity:.45;cursor:default;box-shadow:none}
#oltManagementPanel .device-sync-actions>button:not(.device-auto-sync){background:#eaf2f7;color:#315c75;border:1px solid #b9cdd9;height:32px;min-height:32px;padding:6px 12px}
#oltManagementPanel .device-sync-actions>button:not(.device-auto-sync):hover:not(:disabled){background:#ddebf3;border-color:#92b4c9;color:#254d66}
#oltManagementPanel .olt-row-actions button:not(.olt-remove){width:auto;min-width:28px;height:28px;padding:3px 8px;border:1px solid #c5d8e3;background:#eef5f9;color:#456e86;border-radius:5px;font-size:11px}
#oltManagementPanel .olt-row-actions .olt-remove,#oltManagementPanel [data-delete-offline]{border:1px solid #e4c9cd;border-radius:5px;background:#fbf0f1;color:#a35c65;box-shadow:none}
#oltManagementPanel .olt-row-actions .olt-remove:hover:not(:disabled),#oltManagementPanel [data-delete-offline]:hover:not(:disabled){background:#f6e4e7;color:#914750}
/* Brand and model prototype, isolated from device connections. */
#oltManagementPanel .olt-catalog-demo{padding:16px;max-width:1000px;margin:auto}
#oltManagementPanel .olt-catalog-note{font-size:11px;color:#758591;margin:0 0 14px}
#oltManagementPanel .olt-catalog-tabs{display:flex;gap:6px;border-bottom:1px solid #dce4ea;padding-bottom:8px}
#oltManagementPanel .olt-catalog-tabs button{flex:1;min-height:38px}
#oltManagementPanel .olt-catalog-tabs button[aria-selected=true]{background:#fff;border-color:#8aa5b7;color:#294e66}
#oltManagementPanel .olt-catalog-content{padding:14px 0;color:#536b7b}
#oltManagementPanel .olt-catalog-content h3{font-size:13px;font-weight:600;margin:0 0 12px}
#oltManagementPanel .olt-catalog-content form{display:flex;gap:8px;margin:12px 0 16px;flex-wrap:wrap}
#oltManagementPanel .olt-catalog-content input,#oltManagementPanel .olt-catalog-content select{padding:8px 10px;border:1px solid #ccd9e2;border-radius:6px;background:white;min-width:180px;max-width:100%;box-sizing:border-box}
#oltManagementPanel .olt-catalog-item{display:block;width:100%;text-align:left;margin:6px 0;min-height:36px}
#oltManagementPanel .olt-catalog-item[aria-pressed=true]{border-color:#6d94ad;background:#ddebf3}
#oltManagementPanel .olt-catalog-design{margin-top:16px;padding:16px;border:1px dashed #bfced9;border-radius:7px;background:#f8fafb}
#oltManagementPanel .olt-catalog-content p{font-size:12px}
/* One nested catalog: brands contain categories; categories contain models. */
#oltManagementPanel .olt-catalog-tree{max-width:none;padding:14px 0}
#oltManagementPanel .olt-catalog-tree>h3{font-size:13px;margin:0 0 6px;color:#36566b}
#oltManagementPanel .olt-catalog-group{border:1px solid #dce5eb;border-radius:6px;margin:8px 0;background:#fff}
#oltManagementPanel .olt-catalog-group>summary{cursor:pointer;padding:10px 12px;color:#385b70;font-size:12px;font-weight:600}
#oltManagementPanel .olt-catalog-group>summary small{float:right;color:#81929d;font-size:11px;font-weight:400}
#oltManagementPanel .olt-catalog-children{padding:0 12px 10px 22px;border-top:1px solid #edf1f4}
#oltManagementPanel .olt-catalog-model-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-bottom:1px solid #edf1f4;font-size:12px;color:#476477}
#oltManagementPanel .olt-catalog-tree .olt-catalog-content{padding-top:0}
@media(max-width:600px){#oltManagementPanel .olt-catalog-children{padding-left:10px}#oltManagementPanel .olt-catalog-model-row{flex-wrap:wrap}}
/* Three-column catalog selection. */
#oltManagementPanel .olt-catalog-columns{max-width:none;padding:14px 0}
#oltManagementPanel .olt-catalog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
#oltManagementPanel .olt-catalog-column{min-width:0;min-height:260px;padding:12px;border:1px solid #dbe4eb;border-radius:8px;background:#fff}
#oltManagementPanel .olt-catalog-column-head{padding:0 0 12px;border-bottom:1px solid #edf1f4;margin-bottom:12px}
#oltManagementPanel .olt-catalog-column-head>small{float:right;font-size:11px;color:#9aabb6}
#oltManagementPanel .olt-catalog-column-head h3{margin:0 0 5px;font-size:13px;color:#35566d}
#oltManagementPanel .olt-catalog-column p{font-size:11px;color:#81919e;line-height:1.5}
#oltManagementPanel .olt-catalog-column-head p{margin:0;overflow-wrap:anywhere}
#oltManagementPanel .olt-catalog-inline-add{display:flex;gap:6px;margin:0 0 12px}
#oltManagementPanel .olt-catalog-inline-add input{min-width:0;width:100%;flex:1;padding:7px 9px;border:1px solid #d4dfe7;border-radius:5px;box-sizing:border-box;font-size:11px}
#oltManagementPanel .olt-catalog-choice{display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;width:100%;margin:6px 0;min-height:40px}
#oltManagementPanel .olt-catalog-choice span{overflow-wrap:anywhere;min-width:0}
#oltManagementPanel .olt-catalog-choice small{color:#8295a2;font-weight:400;font-size:10px;white-space:nowrap}
#oltManagementPanel .olt-catalog-choice[aria-pressed=true]{background:#dfeaf2;border-color:#8daabe;color:#294d64;box-shadow:inset 3px 0 #60849b}
@media(max-width:760px){#oltManagementPanel .olt-catalog-grid{grid-template-columns:1fr}#oltManagementPanel .olt-catalog-column{min-height:140px}}
/* Compact catalog proportions. */
#oltManagementPanel .olt-catalog-columns{padding:8px 0}
#oltManagementPanel .olt-catalog-columns .olt-catalog-note{margin:0 0 8px;font-size:10px}
#oltManagementPanel .olt-catalog-grid{gap:8px}
#oltManagementPanel .olt-catalog-column{min-height:170px;padding:9px;border-radius:6px}
#oltManagementPanel .olt-catalog-column-head{padding-bottom:8px;margin-bottom:8px}
#oltManagementPanel .olt-catalog-column-head h3{font-size:12px;margin-bottom:3px}
#oltManagementPanel .olt-catalog-column-head p,#oltManagementPanel .olt-catalog-column-head>small{font-size:10px}
#oltManagementPanel .olt-catalog-inline-add{gap:5px;margin-bottom:8px}
#oltManagementPanel .olt-catalog-inline-add input{padding:5px 7px;font-size:10px}
#oltManagementPanel .olt-catalog-columns .olt-catalog-inline-add button{padding:3px 8px;font-size:10px;line-height:18px}
#oltManagementPanel .olt-catalog-columns .olt-catalog-choice{min-height:30px;padding:4px 8px;margin:4px 0;font-size:11px;line-height:18px}
#oltManagementPanel .olt-catalog-choice small{font-size:9px}
#oltManagementPanel .olt-catalog-columns .olt-catalog-design{margin-top:10px;padding:10px;border-radius:6px}
#oltManagementPanel .olt-catalog-columns .olt-catalog-design h3{font-size:12px;margin:0 0 6px}
#oltManagementPanel .olt-catalog-columns .olt-catalog-design p{font-size:11px;margin:5px 0 8px}
#oltManagementPanel .olt-catalog-columns>[role=status]{font-size:10px;margin:7px 0 0;color:#7d8e9a}
@media(max-width:760px){#oltManagementPanel .olt-catalog-column{min-height:110px}}
/* Dense spreadsheet-like catalog rows. */
#oltManagementPanel .olt-catalog-columns .olt-catalog-choice{min-height:24px;height:auto;margin:0;padding:2px 7px;border:0;border-bottom:1px solid #e8edf1;border-radius:0;background:transparent;box-shadow:none;line-height:19px;font-weight:400;gap:5px}
#oltManagementPanel .olt-catalog-columns .olt-catalog-choice:hover:not(:disabled){background:#f0f5f8;border-color:#e8edf1;color:#315c75}
#oltManagementPanel .olt-catalog-columns .olt-catalog-choice[aria-pressed=true]{background:#e5eef5;border-color:#d4e1eb;box-shadow:inset 2px 0 #7696ac;color:#294d64;font-weight:600}
#oltManagementPanel .olt-catalog-columns .olt-catalog-choice small{display:none}
#oltManagementPanel .olt-catalog-column{padding:7px;min-height:130px;border-radius:3px}
#oltManagementPanel .olt-catalog-grid{gap:5px}
#oltManagementPanel .olt-catalog-column-head{padding-bottom:6px;margin-bottom:6px}
@media(max-width:760px){#oltManagementPanel .olt-catalog-column{min-height:90px}}
/* Photo-matched BDCOM P3600-04 model panel. */
#oltManagementPanel .olt-model-front{display:block;width:100%;height:auto;max-height:300px;margin:10px auto;background:white;border-radius:5px}
#oltManagementPanel .olt-model-port{fill:transparent;stroke:transparent;stroke-width:3;cursor:pointer;outline:none}
#oltManagementPanel .olt-model-port:hover,#oltManagementPanel .olt-model-port:focus-visible{fill:#85b9db30;stroke:#a4cde7}
#oltManagementPanel .olt-model-port[aria-pressed=true]{fill:#85b9db40;stroke:#68a1c7;stroke-width:4}
#oltManagementPanel .olt-model-port-status{font-size:11px;color:#708795;margin:6px 0 0}
#oltManagementPanel .olt-model-sketch{max-height:280px;background:#f8fafb}
#oltManagementPanel .olt-model-sketch .olt-model-port{stroke-width:1.4}
#oltManagementPanel .olt-model-sketch .olt-model-port[aria-pressed=true]{stroke-width:2}
/* Catalog-driven OLT setup preview and monitored front panels. */
.olt-selected-model-preview{margin:10px 0 0;padding:10px;border:1px solid #dce5eb;border-radius:6px;background:#f8fafb}
.olt-selected-model-preview:empty{display:none}
.olt-selected-model-preview h4{font-size:12px;margin:0 0 8px;color:#3b6077}
.olt-selected-model-preview p,.olt-catalog-picker-note{font-size:11px;color:#768996}
.olt-selected-model-preview .olt-model-front{display:block;width:100%;height:auto;max-height:180px}
.olt-selected-model-preview .olt-model-port{fill:transparent;stroke:transparent;cursor:pointer}
.olt-selected-model-preview .olt-model-port:hover,.olt-selected-model-preview .olt-model-port[aria-pressed=true],.olt-selected-model-preview .olt-model-port:focus-visible{fill:#85b9db40;stroke:#68a1c7;stroke-width:2;outline:none}
#oltManagementPanel .olt-model-live-sketch{padding:10px;background:#f8fafb;border:1px solid #dce5eb;border-radius:6px}
#oltManagementPanel .olt-model-live-sketch>h4{margin:0 0 8px;font-size:12px}
#oltManagementPanel .olt-model-live-sketch .olt-model-port[data-link=UP]{fill:#43b77938;stroke:#4aa77d}
#oltManagementPanel .olt-model-live-sketch .olt-model-port[data-link=DOWN]{fill:#d5767638;stroke:#c97777}
#oltManagementPanel .olt-model-live-sketch .olt-model-port[data-link=Unknown]{fill:#a7b3bb20;stroke:#97a5af}
/* Explicit searchable brand/model lists, including all catalog models. */
.olt-catalog-combo{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 34px;align-items:stretch;gap:0;min-width:0}
.olt-add-dialog .olt-catalog-combo>input{min-width:0;width:100%;box-sizing:border-box;border-top-right-radius:0;border-bottom-right-radius:0}
.olt-add-dialog .olt-catalog-dropdown-toggle{width:34px;min-width:34px;padding:0;border:1px solid #cbd9e3;border-left:0;border-radius:0 6px 6px 0;background:#edf3f7;color:#44677f;font-size:16px}
.olt-catalog-options{position:absolute;top:calc(100% + 3px);left:0;right:0;z-index:20;max-height:210px;overflow:auto;background:#fff;border:1px solid #b8cbd8;border-radius:6px;box-shadow:0 6px 18px #223b4d20;padding:3px}
.olt-catalog-options[hidden]{display:none!important}
.olt-catalog-option{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 9px;color:#34576e;font-size:12px;cursor:pointer;border-radius:3px;font-weight:400}
.olt-catalog-option:hover,.olt-catalog-option.is-active{background:#e9f1f7}
.olt-catalog-option[aria-selected=true]{font-weight:600;background:#f0f5f8}
.olt-catalog-option small{font-size:10px;color:#80939f;text-align:right}
.olt-catalog-options>p{font-size:11px;padding:5px 9px;color:#788d9b}
/* Compact catalog register below the brand/category/model columns. */
#oltManagementPanel .olt-catalog-model-list{margin-top:12px;border:1px solid #d6e1e9;border-radius:4px;overflow:hidden;background:white}
#oltManagementPanel .olt-catalog-list-heading{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:#f4f7f9;border-bottom:1px solid #d6e1e9}
#oltManagementPanel .olt-catalog-list-heading h3{font-size:12px;font-weight:600;color:#3a5c72;margin:0}
#oltManagementPanel .olt-catalog-list-heading small{font-size:10px;color:#8295a2}
#oltManagementPanel .olt-catalog-table-scroll{overflow:auto;max-height:330px}
#oltManagementPanel .olt-catalog-table{width:100%;border-collapse:collapse;font-size:11px;margin:0}
#oltManagementPanel .olt-catalog-table th{position:sticky;top:0;background:#eaf0f5;color:#3f6076;text-align:left;font-weight:600;padding:6px 10px;border-right:1px solid #d6e1e9;border-bottom:1px solid #d6e1e9}
#oltManagementPanel .olt-catalog-table td{padding:4px 10px;color:#526f82;border-right:1px solid #e0e8ee;border-bottom:1px solid #e0e8ee;line-height:20px}
#oltManagementPanel .olt-catalog-table th:first-child{width:28%}
#oltManagementPanel .olt-catalog-table th:nth-child(2){width:24%}
#oltManagementPanel .olt-catalog-table tr:hover td{background:#f4f8fb}
#oltManagementPanel .olt-catalog-table tr.is-selected td{background:#e8f1f7}
#oltManagementPanel .olt-catalog-table .olt-catalog-model-link{background:transparent;border:0;box-shadow:none;padding:0;margin:0;line-height:20px;font-size:11px;font-weight:400;color:#355d78;text-align:left;border-radius:0}
#oltManagementPanel .olt-catalog-table .olt-catalog-model-link:hover{background:transparent;color:#244962;text-decoration:underline}
/* BDCOM 16-port links: illuminate only confirmed UP ports and matching LEDs. */
#oltManagementPanel .olt-link-green-only .olt-model-port[data-link=UP]{fill:#2dc77b65;stroke:#219b62;stroke-width:1.7}
#oltManagementPanel .olt-link-green-only .olt-model-port[data-link=DOWN],#oltManagementPanel .olt-link-green-only .olt-model-port[data-link=Unknown]{fill:transparent;stroke:transparent}
#oltManagementPanel .olt-link-green-only [data-port-led][data-link=UP]{fill:#29ca76;stroke:#159853;filter:drop-shadow(0 0 1px #45df8b)}
#oltManagementPanel .olt-link-green-only [data-port-led]:not([data-link=UP]){fill:#e0e5e5;stroke:#7c8a8a}
#oltManagementPanel .olt-pon-summary{margin:12px 0;padding:10px;border:1px solid #d9e4eb;border-radius:6px;background:#fbfcfd}
#oltManagementPanel .olt-pon-summary-heading{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
#oltManagementPanel .olt-pon-summary-heading h4{font-size:12px;color:#3b6077;margin:0}
#oltManagementPanel .olt-pon-summary-heading>span{font-size:10px;color:#8497a3;flex:1}
#oltManagementPanel .olt-pon-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(76px,1fr));gap:6px}
#oltManagementPanel #oltAddFeaturePane .olt-pon-card{display:flex;align-items:center;flex-direction:column;gap:5px;background:transparent;border:1px solid transparent;border-radius:6px;padding:5px 2px;box-shadow:none;color:#6e8492;min-width:0}
#oltManagementPanel #oltAddFeaturePane .olt-pon-card:hover{background:#edf5f8;border-color:#cbdde6}
#oltManagementPanel #oltAddFeaturePane .olt-pon-card[aria-pressed=true]{background:#e5f2f0;border-color:#8dbfb1}
#oltManagementPanel .olt-pon-circle{width:52px;height:52px;box-sizing:border-box;border-radius:50%;border:2px solid #c4d2da;display:flex;flex-direction:column;align-items:center;justify-content:center;background:white;line-height:1.15}
#oltManagementPanel .olt-pon-circle>span{font-size:9px}
#oltManagementPanel .olt-pon-circle>strong{font-size:17px;font-weight:600;color:#456879;margin-top:3px}
#oltManagementPanel .olt-pon-card.has-online .olt-pon-circle{border-color:#71b49a;color:#397c65}
#oltManagementPanel .olt-pon-counts{display:flex;flex-direction:column;gap:2px;font-size:9px;line-height:1.3;text-align:center;white-space:nowrap}
/* Smaller PON summary indicators. */
#oltManagementPanel .olt-pon-summary{padding:8px;margin:9px 0}
#oltManagementPanel .olt-pon-summary-heading{margin-bottom:7px}
#oltManagementPanel .olt-pon-summary-grid{grid-template-columns:repeat(auto-fit,minmax(62px,1fr));gap:4px}
#oltManagementPanel #oltAddFeaturePane .olt-pon-card{gap:4px;padding:3px 1px}
#oltManagementPanel .olt-pon-circle{width:40px;height:40px;border-width:1.5px}
#oltManagementPanel .olt-pon-circle>span{font-size:8px}
#oltManagementPanel .olt-pon-circle>strong{font-size:13px;margin-top:2px}
#oltManagementPanel .olt-pon-counts{font-size:8px;gap:1px}
/* One clear PON row with stronger labels and counts. */
#oltManagementPanel .olt-pon-summary-grid{display:grid;grid-template-columns:repeat(16,minmax(68px,1fr));gap:5px;overflow-x:auto;padding:3px 1px 7px;scrollbar-width:thin}
#oltManagementPanel .olt-pon-circle{border-color:#9eb6c5;background:#f4f8fb}
#oltManagementPanel .olt-pon-circle>span{font-size:8px;font-weight:700;color:#355c74}
#oltManagementPanel .olt-pon-circle>strong{font-size:14px;font-weight:700;color:#274d65}
#oltManagementPanel .olt-pon-counts{font-size:9px;font-weight:600;gap:2px;line-height:1.25;color:#526f83}
#oltManagementPanel .olt-pon-counts>span:first-child{color:#2f8063}
#oltManagementPanel .olt-pon-counts>span:last-child{color:#667f91}
#oltManagementPanel .olt-pon-card.has-online .olt-pon-circle{background:#f0faf5;border-color:#66a98c}
#oltManagementPanel .olt-pon-summary-heading h4{font-size:12px;font-weight:700;color:#2f536b}
#oltManagementPanel .olt-pon-counts>span:first-child{color:#218554;font-weight:700}
#oltManagementPanel .olt-pon-counts>span:last-child{color:#c34f55;font-weight:700}
#oltManagementPanel fieldset.olt-pon-summary{min-width:0;position:relative;padding-top:6px}
#oltManagementPanel .olt-pon-summary>legend{float:none;display:table;width:auto;margin:0 auto;padding:0 12px;font-size:11px;font-weight:700;letter-spacing:.08em;color:#385f78;background:#fbfcfd}
#oltManagementPanel .olt-pon-summary-heading{margin-bottom:6px}
#oltManagementPanel .olt-pon-summary-heading>span{font-size:9px}
#oltManagementPanel .olt-pon-summary-grid{grid-template-columns:repeat(var(--pon-count,16),minmax(68px,1fr))}
/* Keep 4/8/16-port summaries equally compact rather than stretching short rows. */
#oltManagementPanel .olt-pon-summary-grid{grid-template-columns:repeat(var(--pon-count,16),68px);width:max-content;max-width:100%;box-sizing:border-box;margin:0 auto;justify-content:start}
#oltManagementPanel .olt-pon-summary-grid{margin-left:0;margin-right:0;justify-content:start}
/* Size the PON group boundary to its actual port row. */
#oltManagementPanel fieldset.olt-pon-summary{width:fit-content;max-width:100%;box-sizing:border-box;margin-left:0;margin-right:0;justify-self:start}

#oltManagementPanel .olt-onu-status-menu .olt-onu-all{background:#edf4fa;border-color:#cbdde9;color:#3f6784}

/* Muted brick tone makes an intentionally disabled router clear. */
#routerManagementPanel .router-status-disabled{color:#a64f3d;background:#fbede7;border-color:#e5c2b5}

#routerManagementPanel .olt-management-head,:is(#switchManagementPanel,#powerSystemPanel) .olt-management-head{grid-template-columns:minmax(0,1fr) auto}
#routerManagementPanel .device-list-search,:is(#switchManagementPanel,#powerSystemPanel) .device-list-search{margin-left:auto;display:flex;align-items:center;min-width:0}
#routerManagementPanel .device-list-search input,:is(#switchManagementPanel,#powerSystemPanel) .device-list-search input{width:250px;max-width:42vw;height:30px;box-sizing:border-box;padding:5px 10px;border:1px solid #cbdde8;border-radius:5px;background:#fff;color:#31566c;font-size:11px}
#routerManagementPanel .router-status-down{color:#b23538;background:#fce7e7;border-color:#e9b7b9}
@media(max-width:480px){#routerManagementPanel .device-list-search input,:is(#switchManagementPanel,#powerSystemPanel) .device-list-search input{width:170px;max-width:42vw}}

/* Compact Router inventory spacing. */
#routerManagementPanel .olt-management-head{padding-top:10px;padding-bottom:10px}
#routerManagementPanel .olt-management-content{padding-top:5px;padding-bottom:5px}
#routerManagementPanel .olt-management-content>.olt-toolbar.device-sync-toolbar{margin-bottom:5px}
#routerManagementPanel [data-router-list]>.olt-table-controls{padding-top:5px;padding-bottom:5px}
#routerManagementPanel .router-inventory-table th,#routerManagementPanel .router-inventory-table td{height:auto;padding-top:5px;padding-bottom:5px;line-height:1.3;vertical-align:middle}
#routerManagementPanel [data-router-list]>.olt-list-footer{padding-top:6px;padding-bottom:6px}

#routerManagementPanel .router-more-button{min-width:28px;padding:3px 7px;font-size:19px;line-height:20px}
#routerManagementPanel .router-row-menu{position:fixed;inset:auto;margin:0;padding:4px;width:125px;box-sizing:border-box;border:1px solid #dfd4cf;border-radius:6px;background:#fff;box-shadow:0 5px 18px #243c5020}
#routerManagementPanel .router-row-menu [data-router-delete]{width:100%;padding:6px 10px;text-align:left;color:#ab493e;background:#fff4f1;border:0;border-radius:4px;font-size:11px}
#routerManagementPanel .router-row-menu [data-router-delete]:hover{background:#f8e3dc}

#routerManagementPanel .router-row-menu [data-router-edit]{width:100%;margin-bottom:3px;padding:6px 10px;text-align:left;color:#315c75;background:#edf4f8;border:0;border-radius:4px;font-size:11px}
#routerManagementPanel .router-row-menu [data-router-edit]:hover{background:#deebf2}

/* Open router actions as a vertical dropdown below the three-dot button. */
#routerManagementPanel .router-row-menu:popover-open{display:flex;flex-direction:column;align-items:stretch;gap:3px;max-height:min(150px,40vh);overflow-y:auto}
#routerManagementPanel .router-row-menu>button{display:block;flex:none;box-sizing:border-box;width:100%;min-width:0;margin:0;text-align:left;white-space:nowrap}
#routerManagementPanel .router-row-menu>button[role=menuitem]{display:flex;align-items:center;gap:7px;padding:4px 7px;font-size:12px}
#routerManagementPanel .router-row-menu .router-action-symbol{display:grid;place-items:center;flex:0 0 21px;height:21px;border-radius:5px;font-size:15px;line-height:1}
#routerManagementPanel .router-row-menu [data-router-edit] .router-action-symbol{background:#dceaf8;color:#305e90}
#routerManagementPanel .router-row-menu [data-router-delete] .router-action-symbol{background:#f8ddd9;color:#9b4139}
#routerManagementPanel .router-row-menu [data-router-port-alarms]{background:#fbf3df;color:#765410}
#routerManagementPanel .router-row-menu [data-router-port-alarms]:hover{background:#f5e8c9}
#routerManagementPanel .router-row-menu [data-router-port-alarms] .router-action-symbol{background:#f2e2b7;color:#765410}

/* Pin each router's overflow control to the action-cell boundary. */
#routerManagementPanel .router-inventory-table td:last-child{position:relative;padding-right:39px;white-space:nowrap}
#routerManagementPanel .router-inventory-table td:last-child>.router-more-button{position:absolute;right:3px;top:50%;transform:translateY(-50%);margin:0;width:28px;min-width:28px;box-sizing:border-box}

#routerManagementPanel .router-list-toggle .olt-status-track{width:44px;height:22px;border-radius:12px}
#routerManagementPanel .router-list-toggle .olt-status-track:after{width:16px;height:16px;left:3px;top:3px}
#routerManagementPanel .router-list-toggle input:checked+.olt-status-track:after{transform:translateX(22px)}
#routerManagementPanel .router-list-toggle input[type=checkbox]{width:44px;height:22px}
#routerManagementPanel .router-inventory-table [data-router-open]{min-width:76px;min-height:30px;padding:5px 13px;box-sizing:border-box;font-size:12px;line-height:18px;border-radius:6px}

/* A quiet frame groups the router row actions. */
#routerManagementPanel .router-inventory-table td:last-child{padding-top:8px;padding-bottom:8px;padding-left:10px;background:#fbfcfd}
#routerManagementPanel .router-inventory-table td:last-child::before{content:'';position:absolute;inset:3px 2px;border:1px solid #d3e0e8;border-radius:7px;pointer-events:none}
#routerManagementPanel .router-inventory-table td:last-child>.router-more-button{right:6px}

#routerManagementPanel .router-list-toggle input:not(:checked)+.olt-status-track{background:#c78670;box-shadow:inset 0 0 0 1px #ad6d59}

#oltManagementPanel .olt-row-actions{position:relative;justify-content:flex-start;gap:8px;min-height:38px;padding:4px 38px 4px 8px;border:1px solid #d3e0e8;border-radius:7px;background:#fbfcfd;box-sizing:border-box}
#oltManagementPanel .olt-row-actions .olt-status-track{width:44px;height:22px;border-radius:12px}
#oltManagementPanel .olt-row-actions .olt-status-track:after{width:16px;height:16px;left:3px;top:3px}
#oltManagementPanel .olt-row-actions input:checked+.olt-status-track:after{transform:translateX(22px)}
#oltManagementPanel .olt-row-actions input:not(:checked)+.olt-status-track{background:#c78670;box-shadow:inset 0 0 0 1px #ad6d59}
#oltManagementPanel .olt-row-actions .olt-open{width:auto;min-width:76px;min-height:30px;padding:5px 13px;font-size:12px;line-height:18px;border-radius:6px}
#oltManagementPanel .olt-row-actions .olt-more-button{position:absolute;right:3px;top:50%;transform:translateY(-50%);margin:0;width:28px;padding:3px 7px;font-size:19px;line-height:20px}
#oltManagementPanel .olt-row-menu{position:fixed;inset:auto;margin:0;padding:4px;width:125px;box-sizing:border-box;border:1px solid #dfd4cf;border-radius:6px;background:#fff;box-shadow:0 5px 18px #243c5020}
#oltManagementPanel .olt-row-menu:popover-open{display:flex;flex-direction:column;gap:3px}
#oltManagementPanel .olt-row-actions .olt-row-menu>button{display:block;box-sizing:border-box;width:100%;height:auto;min-height:28px;padding:6px 10px;text-align:left;font-size:11px;line-height:18px;background:#edf4f8;color:#315c75;border:0;border-radius:4px}
#oltManagementPanel .olt-row-actions .olt-row-menu>.olt-remove{background:#fff4f1;color:#ab493e}

#oltManagementPanel .olt-list-table .olt-updown>.olt-down.active{color:#b23538;background:#fce7e7;border-color:#e9b7b9}
#oltManagementPanel .olt-list-table .olt-inactive-status.olt-disabled-status{color:#a64f3d;background:#fbede7;border-color:#e5c2b5}

/* Compact OLT inventory to match the Router list density. */
#oltManagementPanel .olt-list-table th,#oltManagementPanel .olt-list-table td{height:auto;padding-top:5px;padding-bottom:5px;line-height:1.3;vertical-align:middle}
#oltManagementPanel .olt-list-table .olt-row-actions{min-height:34px;padding-top:1px;padding-bottom:1px;gap:6px}
#oltManagementPanel .olt-list-table .olt-row-actions .olt-row-toggle{min-height:24px;margin-top:0;margin-bottom:0}
#oltManagementPanel .olt-list-table .olt-updown>span,#oltManagementPanel .olt-list-table .olt-inactive-status{height:25px}
#oltManagementPanel .olt-add-feature-pane>.olt-table-controls{padding-top:5px;padding-bottom:5px}
#oltManagementPanel .olt-list-footer{padding-top:6px;padding-bottom:6px}
#oltManagementPanel .olt-management-content{padding-top:5px;padding-bottom:5px}

#oltManagementPanel .olt-list-table th:nth-child(2),#oltManagementPanel .olt-list-table td:nth-child(2){width:38px;min-width:30px;padding-left:5px;padding-right:5px;white-space:nowrap}
#oltManagementPanel .olt-list-table th:nth-child(4),#oltManagementPanel .olt-list-table td:nth-child(4){min-width:190px;width:28%;text-align:left}
#oltManagementPanel .olt-list-table td:nth-child(4) .olt-row-name{white-space:normal;overflow-wrap:anywhere;text-align:left}

:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) :is(.router-inventory-table,.switch-inventory-table) :is(th,td):nth-child(2){width:38px;min-width:30px;padding-left:5px;padding-right:5px;white-space:nowrap}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) :is(.router-inventory-table,.switch-inventory-table) :is(th,td):nth-child(3){min-width:190px;width:28%;text-align:left;white-space:normal;overflow-wrap:anywhere}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table :is(th,td){height:auto;padding-top:5px;padding-bottom:5px;line-height:1.3;vertical-align:middle}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions{position:relative;display:flex;align-items:center;justify-content:flex-start;gap:8px;min-height:34px;padding:2px 38px 2px 8px;border:1px solid #d3e0e8;border-radius:7px;background:#fbfcfd;box-sizing:border-box}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions .olt-row-toggle{min-height:24px;margin:0}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions .olt-status-track{width:44px;height:22px;border-radius:12px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions .olt-status-track:after{width:16px;height:16px;left:3px;top:3px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions input:checked+.olt-status-track:after{transform:translateX(22px)}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions input:not(:checked)+.olt-status-track{background:#c78670;box-shadow:inset 0 0 0 1px #ad6d59}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions [data-open]{width:auto;min-width:76px;min-height:30px;padding:5px 13px;font-size:12px;line-height:18px;border-radius:6px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions .switch-more-button{position:absolute;right:3px;top:50%;transform:translateY(-50%);margin:0;width:28px;padding:3px 7px;font-size:19px;line-height:20px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-menu{position:fixed;inset:auto;margin:0;padding:4px;width:125px;box-sizing:border-box;border:1px solid #dfd4cf;border-radius:6px;background:#fff;box-shadow:0 5px 18px #243c5020}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-menu:popover-open{display:flex;flex-direction:column;gap:3px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions .switch-row-menu>button{display:block;width:100%;height:auto;min-height:28px;box-sizing:border-box;padding:6px 10px;text-align:left;font-size:11px;line-height:18px;background:#edf4f8;color:#315c75;border:0;border-radius:4px}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions .switch-row-menu>[data-delete]{background:#fff4f1;color:#ab493e}

/* Keep Router Action only as wide as its controls. */
#routerManagementPanel .router-inventory-table th:last-child,#routerManagementPanel .router-inventory-table td:last-child{width:1%;min-width:0;white-space:nowrap}
#routerManagementPanel .router-inventory-table td:last-child{padding-left:7px;padding-right:37px}
#routerManagementPanel .router-inventory-table td:nth-child(3){width:auto}

#routerManagementPanel .router-inventory-table th:nth-child(6),#routerManagementPanel .router-inventory-table td:nth-child(6){width:1%;min-width:0;padding-left:6px;padding-right:6px;white-space:nowrap}

/* Match compact action/status columns across all device lists. */
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table th:last-child,:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table td:last-child,#oltManagementPanel .olt-list-table th:last-child,#oltManagementPanel .olt-list-table td:last-child{width:1%;min-width:0;padding-left:6px;padding-right:6px;white-space:nowrap}
:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table th:nth-child(6),:is(#switchManagementPanel,#powerSystemPanel) .switch-inventory-table td:nth-child(6),#oltManagementPanel .olt-list-table th:nth-child(6),#oltManagementPanel .olt-list-table td:nth-child(6){width:1%;min-width:0;padding-left:6px;padding-right:6px;white-space:nowrap}
:is(#switchManagementPanel,#powerSystemPanel) .switch-row-actions,#oltManagementPanel .olt-list-table .olt-row-actions{width:max-content;min-width:0}

/* Shared device catalog layout. */
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-add-feature-pane[hidden],:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-brand-model-pane[hidden],:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-header-search[hidden]{display:none!important}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-brand-model-pane{min-height:160px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-demo{padding:16px;max-width:1000px;margin:auto}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-note{font-size:11px;color:#758591;margin:0 0 14px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-tabs{display:flex;gap:6px;border-bottom:1px solid #dce4ea;padding-bottom:8px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-tabs button{flex:1;min-height:38px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-tabs button[aria-selected=true]{background:#fff;border-color:#8aa5b7;color:#294e66}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-content{padding:14px 0;color:#536b7b}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-content h3{font-size:13px;font-weight:600;margin:0 0 12px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-content form{display:flex;gap:8px;margin:12px 0 16px;flex-wrap:wrap}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-content input,:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-content select{padding:8px 10px;border:1px solid #ccd9e2;border-radius:6px;background:white;min-width:180px;max-width:100%;box-sizing:border-box}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-item{display:block;width:100%;text-align:left;margin:6px 0;min-height:36px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-item[aria-pressed=true]{border-color:#6d94ad;background:#ddebf3}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-design{margin-top:16px;padding:16px;border:1px dashed #bfced9;border-radius:7px;background:#f8fafb}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-content p{font-size:12px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-tree{max-width:none;padding:14px 0}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-tree>h3{font-size:13px;margin:0 0 6px;color:#36566b}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-group{border:1px solid #dce5eb;border-radius:6px;margin:8px 0;background:#fff}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-group>summary{cursor:pointer;padding:10px 12px;color:#385b70;font-size:12px;font-weight:600}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-group>summary small{float:right;color:#81929d;font-size:11px;font-weight:400}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-children{padding:0 12px 10px 22px;border-top:1px solid #edf1f4}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-model-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-bottom:1px solid #edf1f4;font-size:12px;color:#476477}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-tree .olt-catalog-content{padding-top:0}
@media(max-width:600px){:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-children{padding-left:10px}:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-model-row{flex-wrap:wrap}}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns{max-width:none;padding:14px 0}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column{min-width:0;min-height:260px;padding:12px;border:1px solid #dbe4eb;border-radius:8px;background:#fff}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column-head{padding:0 0 12px;border-bottom:1px solid #edf1f4;margin-bottom:12px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column-head>small{float:right;font-size:11px;color:#9aabb6}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column-head h3{margin:0 0 5px;font-size:13px;color:#35566d}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column p{font-size:11px;color:#81919e;line-height:1.5}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column-head p{margin:0;overflow-wrap:anywhere}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-inline-add{display:flex;gap:6px;margin:0 0 12px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-inline-add input{min-width:0;width:100%;flex:1;padding:7px 9px;border:1px solid #d4dfe7;border-radius:5px;box-sizing:border-box;font-size:11px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-choice{display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;width:100%;margin:6px 0;min-height:40px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-choice span{overflow-wrap:anywhere;min-width:0}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-choice small{color:#8295a2;font-weight:400;font-size:10px;white-space:nowrap}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-choice[aria-pressed=true]{background:#dfeaf2;border-color:#8daabe;color:#294d64;box-shadow:inset 3px 0 #60849b}
@media(max-width:760px){:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-grid{grid-template-columns:1fr}:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column{min-height:140px}}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns{padding:8px 0}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns .olt-catalog-note{margin:0 0 8px;font-size:10px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-grid{gap:8px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column{min-height:170px;padding:9px;border-radius:6px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column-head{padding-bottom:8px;margin-bottom:8px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column-head h3{font-size:12px;margin-bottom:3px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column-head p,:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column-head>small{font-size:10px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-inline-add{gap:5px;margin-bottom:8px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-inline-add input{padding:5px 7px;font-size:10px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns .olt-catalog-inline-add button{padding:3px 8px;font-size:10px;line-height:18px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns .olt-catalog-choice{min-height:30px;padding:4px 8px;margin:4px 0;font-size:11px;line-height:18px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-choice small{font-size:9px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns .olt-catalog-design{margin-top:10px;padding:10px;border-radius:6px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns .olt-catalog-design h3{font-size:12px;margin:0 0 6px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns .olt-catalog-design p{font-size:11px;margin:5px 0 8px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns>[role=status]{font-size:10px;margin:7px 0 0;color:#7d8e9a}
@media(max-width:760px){:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column{min-height:110px}}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns .olt-catalog-choice{min-height:24px;height:auto;margin:0;padding:2px 7px;border:0;border-bottom:1px solid #e8edf1;border-radius:0;background:transparent;box-shadow:none;line-height:19px;font-weight:400;gap:5px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns .olt-catalog-choice:hover:not(:disabled){background:#f0f5f8;border-color:#e8edf1;color:#315c75}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns .olt-catalog-choice[aria-pressed=true]{background:#e5eef5;border-color:#d4e1eb;box-shadow:inset 2px 0 #7696ac;color:#294d64;font-weight:600}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-columns .olt-catalog-choice small{display:none}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column{padding:7px;min-height:130px;border-radius:3px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-grid{gap:5px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column-head{padding-bottom:6px;margin-bottom:6px}
@media(max-width:760px){:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-column{min-height:90px}}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-model-list{margin-top:12px;border:1px solid #d6e1e9;border-radius:4px;overflow:hidden;background:white}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-list-heading{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:#f4f7f9;border-bottom:1px solid #d6e1e9}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-list-heading h3{font-size:12px;font-weight:600;color:#3a5c72;margin:0}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-list-heading small{font-size:10px;color:#8295a2}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table-scroll{overflow:auto;max-height:330px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table{width:100%;border-collapse:collapse;font-size:11px;margin:0}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table th{position:sticky;top:0;background:#eaf0f5;color:#3f6076;text-align:left;font-weight:600;padding:6px 10px;border-right:1px solid #d6e1e9;border-bottom:1px solid #d6e1e9}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table td{padding:4px 10px;color:#526f82;border-right:1px solid #e0e8ee;border-bottom:1px solid #e0e8ee;line-height:20px}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table th:first-child{width:28%}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table th:nth-child(2){width:24%}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table tr:hover td{background:#f4f8fb}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table tr.is-selected td{background:#e8f1f7}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table .olt-catalog-model-link{background:transparent;border:0;box-shadow:none;padding:0;margin:0;line-height:20px;font-size:11px;font-weight:400;color:#355d78;text-align:left;border-radius:0}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table .olt-catalog-model-link:hover{background:transparent;color:#244962;text-decoration:underline}
.device-management-tabs{display:flex;gap:4px;padding:7px 12px;border-bottom:1px solid #dce3e8;background:#f0f3f5}
.device-management-tabs>button{flex:1;min-height:36px;padding:7px 12px;border:1px solid #dce3e8;border-radius:5px;background:#edf0f3;color:#516b7e;font-size:12px;font-weight:600;cursor:pointer}
.device-management-tabs>button[aria-selected=true]{background:#fff;color:#344f62;border-bottom:2px solid #58778d}
.device-catalog-pane[hidden],.device-inventory-pane[hidden]{display:none!important}

#routerManagementPanel .router-model-sketch{display:block;width:100%;min-width:700px;height:auto}
#routerManagementPanel .olt-catalog-design{overflow-x:auto}
#routerManagementPanel .router-sketch-port{cursor:pointer;outline:none}
#routerManagementPanel .router-sketch-port:hover>rect:first-child,#routerManagementPanel .router-sketch-port:focus-visible>rect:first-child{stroke:#357b9e;stroke-width:2px}
#routerManagementPanel .router-sketch-port.is-selected>rect:first-child{stroke:#167da7;stroke-width:3px}
#routerManagementPanel .router-sketch-caption{font-size:11px;color:#587182;margin:8px 0 0}

#routerManagementPanel .router-inventory-table th:nth-child(6),#routerManagementPanel .router-inventory-table td:nth-child(6){width:auto;min-width:100px;padding-left:9px;padding-right:9px}
#routerManagementPanel .router-inventory-table th:nth-child(7),#routerManagementPanel .router-inventory-table td:nth-child(7){width:1%;min-width:0;padding-left:6px;padding-right:6px;white-space:nowrap}



.device-router-data-pane[hidden]{display:none!important}
#routerManagementPanel .device-router-data-pane{padding:10px 2px}
#routerManagementPanel .device-router-data-pane h3{font-size:13px;color:#365b72;margin:0 0 10px}
#routerManagementPanel .router-data-empty{font-size:11px;color:#708593;padding:12px;border:1px solid #dce5eb;border-radius:6px;background:#fff}

#routerManagementPanel .router-data-controls{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-bottom:10px}
#routerManagementPanel .router-data-controls label{display:grid;gap:5px;font-size:11px;color:#526f82}
#routerManagementPanel .router-data-controls select,#routerManagementPanel [data-sfp-refresh]{min-height:30px;padding:5px 10px;border:1px solid #cbdce6;border-radius:5px;background:#fff;color:#315c75;font-size:11px}
#routerManagementPanel [data-sfp-message],#routerManagementPanel [data-sfp-heading] p{font-size:11px;color:#607d90}
#routerManagementPanel .router-sfp-table{width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap}
#routerManagementPanel .router-sfp-table th,#routerManagementPanel .router-sfp-table td{padding:6px 8px;border:1px solid #dce5eb;text-align:left;vertical-align:top}
#routerManagementPanel .router-sfp-table th{background:#edf3f7;color:#365b72}
#routerManagementPanel .router-sfp-table td{background:#fff}
#routerManagementPanel .router-sfp-table summary{cursor:pointer;color:#315c75}
#routerManagementPanel .router-sfp-table dl{display:grid;grid-template-columns:auto auto;gap:4px 10px;margin:8px 0;font-size:10px}
#routerManagementPanel .router-sfp-table dd{margin:0;white-space:normal;max-width:250px;overflow-wrap:anywhere}

#routerManagementPanel [data-sfp-auto]{min-height:30px;padding:5px 10px;border:1px solid #c5e2d3;border-radius:5px;background:#eaf6ef;color:#26754f;font-size:11px;cursor:pointer}

#routerManagementPanel [data-sfp-auto]{display:inline-flex;align-items:center;gap:7px}

:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-data-controls{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-bottom:10px}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-data-controls label{display:grid;gap:5px;font-size:11px;color:#526f82}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-data-controls select,:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) [data-sfp-refresh]{min-height:30px;padding:5px 10px;border:1px solid #cbdce6;border-radius:5px;background:#fff;color:#315c75;font-size:11px}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) [data-sfp-message],:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) [data-sfp-heading] p{font-size:11px;color:#607d90}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-sfp-table{width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-sfp-table th,:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-sfp-table td{padding:6px 8px;border:1px solid #dce5eb;text-align:left;vertical-align:top}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-sfp-table th{background:#edf3f7;color:#365b72}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-sfp-table td{background:#fff}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-sfp-table summary{cursor:pointer;color:#315c75}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-sfp-table dl{display:grid;grid-template-columns:auto auto;gap:4px 10px;margin:8px 0;font-size:10px}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .router-sfp-table dd{margin:0;white-space:normal;max-width:250px;overflow-wrap:anywhere}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) [data-sfp-auto]{min-height:30px;padding:5px 10px;border:1px solid #c5e2d3;border-radius:5px;background:#eaf6ef;color:#26754f;font-size:11px;cursor:pointer}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) [data-sfp-auto]{display:inline-flex;align-items:center;gap:7px}
.device-switch-data-pane[hidden],.device-olt-data-pane[hidden]{display:none!important}
.device-switch-data-pane,.device-olt-data-pane{padding:10px 2px}

/* Keep all three management tabs on one responsive row. */
#oltManagementPanel .olt-management-tabs{display:flex;flex-wrap:nowrap;gap:4px;width:100%;box-sizing:border-box}
#oltManagementPanel .olt-management-tabs>button{flex:1 1 0;width:0;min-width:0;max-width:none;box-sizing:border-box;padding-left:6px;padding-right:6px;font-size:clamp(10px,1.1vw,12px);white-space:nowrap}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-management-tabs{display:flex;flex-wrap:nowrap;width:100%;box-sizing:border-box}
:is(#routerManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-management-tabs>button{flex:1 1 0;width:0;min-width:0;box-sizing:border-box;padding-left:6px;padding-right:6px;white-space:nowrap;font-size:clamp(10px,1.1vw,12px)}

#routerManagementPanel .router-row-menu [data-router-move]{display:block;width:100%;margin:0 0 3px;padding:6px 10px;box-sizing:border-box;text-align:left;color:#315c75;background:#edf4f8;border:0;border-radius:4px;font-size:11px}
#routerManagementPanel .router-row-menu [data-router-move]:disabled{opacity:.4;cursor:default}
#routerManagementPanel .router-row-menu:popover-open{max-height:200px}

#routerManagementPanel .router-serial-cell{display:flex;align-items:center;justify-content:center;gap:7px}
#routerManagementPanel .router-order-arrows{display:flex;flex-direction:column;gap:1px}
#routerManagementPanel .router-order-arrows [data-router-move]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:20px;height:17px;min-height:0;padding:0;margin:0;border:1px solid #d2dfe7;border-radius:3px;background:#edf4f8;color:#416a82;font-size:13px;line-height:15px;cursor:pointer}
#routerManagementPanel .router-order-arrows [data-router-move]:hover:not(:disabled){background:#dceaf3;border-color:#93b2c5}
#routerManagementPanel .router-order-arrows [data-router-move]:disabled{opacity:.3;cursor:default}

#routerManagementPanel .router-order-arrows [data-router-move]{border:0;border-radius:0;background:transparent;box-shadow:none;color:#8295a1}
#routerManagementPanel .router-order-arrows [data-router-move]:hover:not(:disabled){background:transparent;border-color:transparent;color:#3f6277;box-shadow:none}

#routerManagementPanel .router-inventory-table td:last-child{padding-right:63px}
#routerManagementPanel .router-inventory-table td:last-child>.router-order-arrows{position:absolute;right:36px;top:50%;transform:translateY(-50%);margin:0}

#routerManagementPanel .router-inventory-table td:last-child{padding-right:37px}
#routerManagementPanel .router-inventory-table th:first-child,#routerManagementPanel .router-inventory-table td:first-child{width:1%;padding-left:3px;padding-right:6px;white-space:nowrap}
#routerManagementPanel .router-select-cell{display:flex;align-items:center;justify-content:flex-start;gap:6px}
#routerManagementPanel .router-select-cell>.router-order-arrows{position:static;transform:none;margin:0}

#routerManagementPanel .router-select-cell>.router-order-arrows{gap:0;opacity:.22;transition:opacity .15s}
#routerManagementPanel .router-select-cell .router-order-arrows [data-router-move]{width:17px;height:14px;font-size:11px;line-height:12px;color:#687f8e}
#routerManagementPanel .router-inventory-table tr:hover .router-order-arrows,#routerManagementPanel .router-select-cell .router-order-arrows:focus-within{opacity:1}

#routerManagementPanel .router-select-cell{gap:2px}
#routerManagementPanel .router-inventory-table td:first-child{padding-left:1px;padding-right:4px}
#routerManagementPanel .router-select-cell .router-order-arrows [data-router-move]{width:13px}
#routerManagementPanel .router-select-cell>input[type=checkbox]{margin-left:0;margin-right:0}

#routerManagementPanel .router-inventory-table th:first-child{padding-left:16px;padding-right:4px;text-align:left;vertical-align:middle}
#routerManagementPanel .router-inventory-table th:first-child input[type=checkbox],#routerManagementPanel .router-select-cell>input[type=checkbox]{display:block;width:13px;height:13px;flex:none;margin:0;vertical-align:middle}
#routerManagementPanel .router-select-cell{align-items:center}

#routerManagementPanel .router-inventory-table th:first-child,#routerManagementPanel .router-inventory-table td:first-child{padding-right:16px}

/* Shared subtle device ordering arrows and aligned selection cells. */
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) :is(.switch-inventory-table,.olt-list-table) th:first-child,:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) :is(.switch-inventory-table,.olt-list-table) td:first-child{width:24px;text-align:center}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) [data-router-user]:hover>td:first-child,:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) [data-router-user].router-user-selected>td:first-child{box-shadow:inset 3px 0 #2987c1;font-weight:600}
:is(:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel),:is(#switchManagementPanel,#powerSystemPanel)) .olt-catalog-table th:first-child{width:28%}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-order-arrows{display:flex;flex-direction:column;gap:1px}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-order-arrows [data-device-move]{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:20px;height:17px;min-height:0;padding:0;margin:0;border:1px solid #d2dfe7;border-radius:3px;background:#edf4f8;color:#416a82;font-size:13px;line-height:15px;cursor:pointer}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-order-arrows [data-device-move]:hover:not(:disabled){background:#dceaf3;border-color:#93b2c5}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-order-arrows [data-device-move]:disabled{opacity:.3;cursor:default}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-order-arrows [data-device-move]{border:0;border-radius:0;background:transparent;box-shadow:none;color:#8295a1}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-order-arrows [data-device-move]:hover:not(:disabled){background:transparent;border-color:transparent;color:#3f6277;box-shadow:none}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) :is(.switch-inventory-table,.olt-list-table) th:first-child,:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) :is(.switch-inventory-table,.olt-list-table) td:first-child{width:1%;padding-left:3px;padding-right:6px;white-space:nowrap}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-select-cell{display:flex;align-items:center;justify-content:flex-start;gap:6px}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-select-cell>.device-order-arrows{position:static;transform:none;margin:0}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-select-cell>.device-order-arrows{gap:0;opacity:.22;transition:opacity .15s}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-select-cell .device-order-arrows [data-device-move]{width:17px;height:14px;font-size:11px;line-height:12px;color:#687f8e}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) :is(.switch-inventory-table,.olt-list-table) tr:hover .device-order-arrows,:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-select-cell .device-order-arrows:focus-within{opacity:1}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-select-cell{gap:2px}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) :is(.switch-inventory-table,.olt-list-table) td:first-child{padding-left:1px;padding-right:4px}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-select-cell .device-order-arrows [data-device-move]{width:13px}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-select-cell>input[type=checkbox]{margin-left:0;margin-right:0}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) :is(.switch-inventory-table,.olt-list-table) th:first-child{padding-left:16px;padding-right:4px;text-align:left;vertical-align:middle}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) :is(.switch-inventory-table,.olt-list-table) th:first-child input[type=checkbox],:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-select-cell>input[type=checkbox]{display:block;width:13px;height:13px;flex:none;margin:0;vertical-align:middle}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) .device-select-cell{align-items:center}
:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) :is(.switch-inventory-table,.olt-list-table) th:first-child,:is(:is(#switchManagementPanel,#powerSystemPanel),#oltManagementPanel) :is(.switch-inventory-table,.olt-list-table) td:first-child{padding-right:16px}

/* Apply the exact Router arrow appearance after module-specific button styles. */
:is(#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-select-cell .device-order-arrows button[data-device-move]{display:flex;align-items:center;justify-content:center;flex:none;box-sizing:border-box;width:13px;min-width:0;max-width:13px;height:14px;min-height:0;padding:0;margin:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:#687f8e;font-size:11px;font-weight:400;line-height:12px;cursor:pointer}
:is(#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-select-cell .device-order-arrows button[data-device-move]:hover:not(:disabled){background:transparent;box-shadow:none;color:#3f6277;border:0}
:is(#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-select-cell .device-order-arrows{display:flex;flex-direction:column;gap:0;opacity:.22;margin:0;position:static;transform:none}
:is(#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) :is(.olt-list-table,.switch-inventory-table) tr:hover .device-order-arrows,:is(#oltManagementPanel,:is(#switchManagementPanel,#powerSystemPanel)) .device-order-arrows:focus-within{opacity:1}

:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-table {
 width: 100%; min-width: 820px; table-layout: fixed; border-collapse: collapse;
 font-size: 12px; line-height: 1.35;
}
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-table th,
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-table td {
 border: 1px solid #cbd5df; padding: 4px; box-sizing: border-box;
 text-align: center; vertical-align: middle; white-space: normal; overflow-wrap: anywhere;
}
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-table th { background: #edf2f7; font-weight: 600; }
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-table th:nth-child(-n+2),
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-table td:nth-child(-n+2) { text-align: left; }
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-table td:nth-child(n+6) { font-variant-numeric: tabular-nums; }

.network-wallpaper { display: none; }
.automation-port-rule { display: grid; grid-template-columns: minmax(180px, 2fr) repeat(3,minmax(90px,1fr)); gap: 10px; align-items: center; padding: 8px 0; border-bottom: 1px solid #d8e4ef; }
.switch-port-alarm-toggle { display: inline-flex; position: relative; align-items: center; justify-content: center; width: 38px; height: 22px; cursor: pointer; }
.switch-port-alarm-toggle input { position: absolute; inset: 0; margin: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; z-index: 1; }
.switch-port-alarm-track { width: 36px; height: 20px; border-radius: 12px; background: #dc4444; box-shadow: inset 0 1px 3px #0002; transition: background .16s ease; }
.switch-port-alarm-track::after { content: ''; display: block; width: 16px; height: 16px; margin: 2px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px #0003; transition: transform .16s ease; }
.switch-port-alarm-toggle input:checked + .switch-port-alarm-track { background: #16965d; }
.switch-port-alarm-toggle input:checked + .switch-port-alarm-track::after { transform: translateX(16px); }
.switch-port-alarm-toggle input:focus-visible + .switch-port-alarm-track { outline: 2px solid #2563eb; outline-offset: 3px; }
.switch-port-alarm-toggle input:disabled + .switch-port-alarm-track { opacity: .5; }
.switch-port-alarm-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; width: 100%; min-width: 74px; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-sizing: border-box; }
.switch-port-alarm-actions .switch-port-alarm-toggle { flex: 0 0 40px; width: 40px; height: 26px; }
.switch-port-alarm-actions .switch-port-alarm-track { width: 38px; height: 22px; background:#ba6a6a;box-shadow:inset 0 0 0 1px #7343431a; }
.switch-port-alarm-actions .switch-port-alarm-track::after { width: 18px; height: 18px;box-shadow:0 1px 2px #243a432b; }
.switch-port-alarm-actions input:checked + .switch-port-alarm-track {background:#4b8b70;}
.switch-port-alarm-actions input:checked + .switch-port-alarm-track::after { transform: translateX(16px); }
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-alarm-menu { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 26px; box-sizing: border-box; width: 26px; height: 26px; padding: 0; margin: 0; border: 1px solid #dce5eb; border-radius: 7px; background: #f8fafb; color: #5b7383; font-size: 19px; line-height: 20px; box-shadow: 0 1px 2px #243c5008; cursor: pointer; }
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-alarm-menu:hover { background: #edf3f6; border-color:#b9ccd8;color: #365e78; }
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-alarm-menu:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-alarm-menu:disabled { opacity: .45; cursor: default; }
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-alarm-menu svg { display: block; width: 17px; height: 21px; flex: none; fill: currentColor; }
:is(:is(#switchManagementPanel,#powerSystemPanel),.router-port-alarm-list) .switch-port-table td:last-child { white-space: nowrap; }
.switch-port-alarm-dialog { width: min(700px,92vw); max-height: 88vh; overflow: auto; border: 1px solid #d8e4ef; border-radius: 12px; padding: 20px; box-sizing: border-box; }
.switch-port-alarm-fields { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; margin: 16px 0; }
.switch-port-alarm-fields label,.switch-port-alarm-dialog .field { display: grid; gap: 5px; margin-bottom: 12px; }
.switch-port-alarm-fields input,.switch-port-alarm-dialog .field input,.switch-port-alarm-dialog textarea { width: 100%; box-sizing: border-box; }
.switch-power-group { min-width: 0; margin: 0; padding: 12px; border: 1px solid #dce5eb; border-radius: 10px; background: #fafcfd; }
.switch-power-group legend { padding: 0 7px; font-weight: 600; color: #415e72;font-size:12px; }
.switch-power-group-grid { display: grid; grid-template-columns: 1.1fr 1fr 1fr; gap: 10px; align-items: start; }
.switch-power-current { display: grid; gap: 6px; font-size: 11px; color: #6b7f8d; }
.switch-power-current strong { color: #31596a; font-size: 14px; font-variant-numeric: tabular-nums;padding:8px 6px;background:#eef4f6;border-radius:6px;line-height:18px; }
.switch-power-group-grid label { min-width: 0; margin: 0; font-size: 12px; }
.switch-power-group-grid input { min-width: 0; padding: 8px 7px;border:1px solid #d4e0e7;border-radius:6px;background:#fff;color:#345369;outline-offset:2px;font-variant-numeric:tabular-nums; }
.switch-power-group-grid input:focus-visible{outline:2px solid #9db9ca;}
.switch-port-alarm-dialog .switch-port-alarm-form-enable{padding:9px 11px;border:1px solid #dce6e2;border-radius:8px;background:#f5f9f7;color:#456658;font-size:12px;gap:9px;}
.switch-port-alarm-dialog .switch-port-alarm-form-enable input[role=switch]{appearance:none;position:relative;flex:0 0 34px;width:34px;height:20px;margin:0;border:0;border-radius:12px;background:#ba6a6a;cursor:pointer;transition:background .16s;}
.switch-port-alarm-dialog .switch-port-alarm-form-enable input[role=switch]::before{content:'';position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #243a432b;transition:transform .16s;}
.switch-port-alarm-dialog .switch-port-alarm-form-enable input[role=switch]:checked{background:#4b8b70;}
.switch-port-alarm-dialog .switch-port-alarm-form-enable input[role=switch]:checked::before{transform:translateX(14px);}
.switch-port-alarm-dialog .switch-port-alarm-form-enable input[role=switch]:focus-visible{outline:2px solid #7ba78e;outline-offset:3px;}
.switch-power-group-grid small { color: #738798; font-size: 11px; }
@media(max-width:600px) { .switch-port-alarm-fields { grid-template-columns: 1fr; } }
.switch-port-alarm-form-enable { display: flex; gap: 8px; align-items: center; }
.switch-shared-alarm-dialog { position: fixed; inset: 18px 0 auto; margin: 0 auto; width: min(720px,94vw); max-height: calc(100dvh - 36px); overflow: auto; box-sizing: border-box; padding: 6px 16px 14px; }
.switch-shared-alarm-dialog > form > .dialoghead { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 12px; height: auto; min-height: 28px; padding: 0 0 2px; margin: 0; border-bottom: 1px solid #e4ecf2; }
.switch-shared-alarm-dialog .dialoghead h2 { margin: 0; padding: 0; font-size: 17px; line-height: 28px; }
.switch-shared-alarm-dialog > form > .dialoghead > [data-close] { position: static; transform: none; flex: 0 0 28px; display: grid; place-items: center; width: 28px; height: 28px; padding: 0; margin: 0; border: 0; border-radius: 5px; background: transparent; color: #627b8d; font-size: 22px; line-height: 1; cursor: pointer; }
.switch-shared-alarm-dialog > form > .dialoghead > [data-close]:hover { color: #234b68; background: #edf4f8; }
.switch-shared-alarm-dialog > form > .dialoghead > [data-close]:focus-visible { outline: 2px solid #5699c6; }
.switch-shared-alarm-dialog [data-name] { margin: 4px 0 7px; }
.switch-common-delivery { margin: 8px 0 12px; padding: 9px 12px; border: 1px solid #d7e3ed; border-radius: 9px; background: #f5f9fc; }
.switch-common-delivery .olt-form-grid { gap: 8px 12px; margin: 8px 0; }
.switch-common-delivery .olt-form-grid label { gap: 4px; }
.switch-common-delivery .olt-form-grid input,.switch-common-delivery .olt-form-grid select { padding: 7px 9px; }
.switch-shared-alarm-dialog .field { margin: 10px 0; }
.switch-shared-alarm-dialog .field input,.switch-shared-alarm-dialog .field select,.switch-shared-alarm-dialog .field textarea { padding: 8px 10px; margin-top: 4px; }
.switch-shared-alarm-dialog [data-pane] > p { margin: 7px 0; font-size: 12px; }
.switch-shared-alarm-dialog .olt-form-tabs { margin: 10px 0; }
.switch-message-preview-toggle { margin: 10px 0; border: 1px solid #dce7ee; border-radius: 7px; }
.switch-message-preview-toggle > summary { cursor: pointer; padding: 7px 10px; color: #315c75; font-size: 12px; font-weight: 600; }
.switch-message-preview-toggle .switch-alarm-previews { margin: 0; padding: 0 8px 8px; gap: 6px; }
.switch-message-preview-toggle .switch-alarm-previews pre { padding: 8px 10px; }
.switch-common-delivery legend { color: #315c75; font-weight: 600; }
.switch-common-token { grid-column: 1 / -1; }
.router-port-alarm-view { width: min(1200px,calc(100vw - 40px)); max-height: 90vh; overflow: auto; box-sizing: border-box; }
.router-port-alarm-view .router-port-alarm-list > h4 { display: none; }
.router-port-alarm-view [data-name] { margin: 4px 0 0; }
.switch-detail-actions { display: flex; align-items: center; gap: 8px; }
:is(#switchManagementPanel,#powerSystemPanel) .switch-detail-head { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr) minmax(0,1fr); align-items: center; gap: 10px; }
:is(#switchManagementPanel,#powerSystemPanel) .switch-detail-head > h3 { margin: 0; text-align: center; overflow-wrap: anywhere; }
:is(#switchManagementPanel,#powerSystemPanel) .switch-detail-head .olt-detail-heading { justify-self: start; }
:is(#switchManagementPanel,#powerSystemPanel) .switch-detail-head .switch-detail-actions { justify-self: end; }
@media(max-width:650px) { :is(#switchManagementPanel,#powerSystemPanel) .switch-detail-head { grid-template-columns: minmax(0,1fr) minmax(0,1fr); } :is(#switchManagementPanel,#powerSystemPanel) .switch-detail-head > h3 { grid-column: 1 / -1; grid-row: 1; } }
.switch-shared-alarm-dialog [hidden] { display: none !important; }
.switch-shared-alarm-dialog .switch-common-token .olt-secret-field { display: block; position: relative; width: 100%; }
.switch-shared-alarm-dialog .switch-common-token input[name=token] { width: 100%; box-sizing: border-box; padding-right: 44px; }
.switch-shared-alarm-dialog .switch-shared-token-eye { position: absolute; right: 3px; top: 50%; transform: translateY(-50%); display: flex; align-items: center; justify-content: center; width: 34px; height: 30px; padding: 0; margin: 0; border: 0; border-radius: 5px; background: transparent; color: #315c75; cursor: pointer; }
.switch-shared-alarm-dialog .switch-shared-token-eye:hover { background: #e8f1f8; }
.switch-shared-alarm-dialog .switch-shared-token-eye:focus-visible { outline: 2px solid #5699c6; }
.switch-shared-alarm-dialog .switch-shared-token-eye svg { width: 19px; height: 19px; flex: none; }
.switch-alarm-previews { display: grid; gap: 8px; margin: 10px 0 18px; }
.switch-alarm-previews pre { margin: 0; padding: 12px; border: 1px solid #dce7ee; border-radius: 8px; background: #f4f8fb; color: #31546d; white-space: pre-wrap; overflow-wrap: anywhere; font: 12px/1.6 system-ui,sans-serif; }
.switch-repeat-controls { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; width: 100%; }
.switch-port-alarm-dialog .switch-repeat-controls input,
.switch-repeat-controls select { width: 100%; min-width: 0; height: 38px; box-sizing: border-box; }
.switch-repeat-controls select { width: 100%; min-height: 36px; border: 1px solid #cbd8e3; border-radius: 6px; padding: 6px 10px; background: #fff; color: #315c75; }
.switch-port-actions-menu { position: fixed; inset: auto; margin: 0; width: 160px; padding: 4px; border: 1px solid #d7e2ea; border-radius: 6px; background: #fff; box-shadow: 0 5px 18px #243c5020; box-sizing: border-box; }
.switch-port-actions-menu button { width: 100%; padding: 7px 10px; text-align: left; border: 0; border-radius: 4px; background: #edf4f8; color: #315c75; cursor: pointer; }
.switch-port-actions-menu button:hover { background: #dfedf6; }
.switch-port-alarm-info { display: grid; grid-template-columns: 130px minmax(0,1fr); margin: 12px 0 16px; border: 1px solid #dbe5ed; border-radius: 8px; overflow: hidden; font-size: 13px; }
.switch-port-alarm-info dt,.switch-port-alarm-info dd { margin: 0; padding: 7px 10px; border-bottom: 1px solid #e6edf3; overflow-wrap: anywhere; }
.switch-port-alarm-info dt { background: #f1f6fa; color: #4b6478; }
.switch-port-alarm-info dd { font-variant-numeric: tabular-nums; }
.switch-port-alarm-info input[name=description] { width: 100%; min-width: 0; box-sizing: border-box; padding: 7px 9px; border: 1px solid #cbd8e3; border-radius: 6px; font: inherit; color: #234b68; }
@media(prefers-reduced-motion:reduce) { .switch-port-alarm-track,.switch-port-alarm-track::after { transition: none; } }
.automation-port-rule label,.automation-port-options label { display: grid; gap: 4px; font-size: 12px; }
.automation-port-rule label:first-child { display: flex; align-items: center; }
.automation-port-rule input[type=number] { width: 100%; min-width: 0; box-sizing: border-box; }
.automation-port-options { display: grid; grid-template-columns: 130px 1fr; gap: 10px; margin: 10px 0; }
.automation-port-options small { grid-column: 1 / -1; }
@media(max-width:600px) { .automation-port-rule { grid-template-columns: repeat(3,1fr); } .automation-port-rule label:first-child { grid-column:1 / -1; } .automation-port-options { grid-template-columns:1fr; } }
.map-access-blocked .mapwrap > :not(.network-wallpaper) { visibility: hidden !important; pointer-events: none !important; }
.map-access-blocked .network-wallpaper {
 display: grid;
 place-items: center;
 position: absolute;
 inset: 0;
 overflow: hidden;
 color: #edf7fa;
 background: radial-gradient(ellipse at 22% 18%, #344653, transparent 66%), linear-gradient(145deg, #25343f, #171f2b);
}
.network-wallpaper > svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.network-wallpaper-title {
 position: relative;
 margin-bottom: 14vh;
 padding: 20px 34px;
 text-align: center;
 border: 1px solid #c4e8f32e;
 border-radius: 16px;
 background: #c6ebfa12;
 backdrop-filter: blur(8px);
}
.network-wallpaper-title small { display: block; letter-spacing: .22em; color: #aad3df; }
.network-wallpaper-title strong { display: block; font-size: clamp(24px, 4vw, 50px); }

#oltManagementPanel tr.olt-duplicate-port > td { background-color: #fff1d2; }

/* Keep fiber color selection compact in the route form. */
.compact-route-form .route-color-control{padding:7px 9px}
.compact-route-form .route-color-preview{padding:3px 6px;gap:6px;flex-wrap:wrap}
.compact-route-form .route-color-boxes{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.compact-route-form .route-color-boxes button{display:grid;place-items:center;width:25px;height:25px;min-height:0;padding:0}
.compact-route-form .route-color-boxes button small{display:none}
.compact-route-form .route-color-boxes button b{top:-3px;right:0}

.fiber-color-reference .fiber-inspector-tube{padding:7px 8px;margin-top:6px;border:1px solid #d6e4eb;border-radius:7px;background:linear-gradient(135deg,#fff,#f3f8fb);border-inline-start:5px solid var(--tube-accent,#d6e4eb)}
.fiber-inspector-tube>strong{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#315d72}
.fiber-inspector-tube>strong>small{padding:2px 6px;border-radius:9px;background:#eaf1f5;font-size:10px;font-weight:400}
.fiber-color-reference .fiber-inspector-tube>ol{display:flex;flex-wrap:wrap;gap:5px;margin:7px 0 0;padding:0}
.fiber-color-reference .fiber-inspector-tube>ol>li{width:20px;height:20px;font-size:9px;box-shadow:inset 0 0 0 1px #ffffff55}

.join-fiber-title>.join-vertical-identity{text-align:center}.join-vertical-identity{width:100%;min-width:0;box-sizing:border-box;background:transparent;border:1px solid transparent;border-radius:4px;padding:1px 4px;color:inherit;font:inherit}.join-vertical-identity:hover,.join-vertical-identity:focus{border-color:#a5bfcd;background:#fff}

.join-core-color-editor{width:min(360px,calc(100vw - 32px));max-height:85vh}
.join-core-color-list{max-height:50vh;overflow:auto;margin:12px 0}
.join-core-color-list fieldset{border:1px solid #d6e4eb;border-radius:8px;margin:0 0 8px;padding:8px}
.join-core-color-list label{display:grid;grid-template-columns:1fr 14px 1.5fr;align-items:center;gap:8px;margin:4px 0}
.join-core-color-list i{width:14px;height:14px;border:1px solid #a5bfcd;border-radius:50%}



#dialog.compact-route-form .fiber-route-count-row{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:6px}.fiber-route-count-row>#routeCoreColors{display:flex;align-items:center;justify-content:center;gap:4px;min-width:0;height:30px;min-height:30px;box-sizing:border-box;padding:2px 4px;border:1px solid #b8dcd6;border-radius:7px;background:#edf8f5;color:#215c53;font-size:11px;line-height:1.2;white-space:normal}.fiber-route-count-row>#routeCoreColors:hover{background:#dff2ec}

#routeCoreColors svg{flex:none}

.join-box-dialog .join-all-diagram>.join-all-columns>.join-all-column{width:100%;min-width:0;box-sizing:border-box}
.join-box-dialog .join-all-diagram .join-core-table-head>span:nth-child(1){flex:0 0 110px}
.join-box-dialog .join-all-diagram .join-core-table-head>span:nth-child(2){flex:1 1 0;min-width:0}
.join-box-dialog .join-all-diagram .join-core-table-head>span:nth-child(3),
.join-box-dialog .join-all-diagram .join-core-index{flex:0 0 26px}
.join-box-dialog .join-all-diagram .join-core-table-head>.join-tube-heading{flex:0 0 34px}

.join-box-dialog .join-diagram-scroll:has(>.join-all-diagram>.join-all-columns){padding-inline:40px}
.join-box-dialog .join-diagram-scroll>.join-all-diagram:has(>.join-all-columns){width:100%;margin-inline:0}
.join-box-dialog .join-diagram-scroll>.join-all-diagram>.join-all-columns{width:100%;justify-content:space-between;column-gap:140px}

#oltManagementPanel .olt-row-actions a.olt-open{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;text-decoration:none;font-weight:600}



#routerManagementPanel .router-ppp-summary{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0;color:#31566a;font-size:12px}#routerManagementPanel .router-ppp-summary span{display:inline-flex;align-items:center;gap:8px;padding:4px 8px;border:1px solid #d4e4eb;border-radius:6px;background:#f3f8fb}#routerManagementPanel .router-ppp-summary span+span{background:#eaf6ef;color:#236345}#routerManagementPanel .router-ppp-summary strong{font-size:14px;font-variant-numeric:tabular-nums}

#routerManagementPanel .olt-management-head:has(.router-ppp-summary){grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}#routerManagementPanel .router-ppp-summary{justify-content:center;margin:0}@media(max-width:650px){#routerManagementPanel .olt-management-head:has(.router-ppp-summary){grid-template-columns:minmax(0,1fr) auto}#routerManagementPanel .router-ppp-summary{grid-column:1/-1;grid-row:2}}

.pon-calculator-button{flex:none;white-space:nowrap;padding:5px 8px;border:1px solid #b8dcd6;border-radius:6px;background:#edf8f5;color:#215c53;font-size:11px;font-weight:600}
.pon-calculator-dialog{width:min(390px,calc(100vw - 24px));box-sizing:border-box}
.pon-calculator-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.pon-calculator-fields label{display:grid;gap:4px}
.pon-calculator-fields input,.pon-calculator-fields select{width:100%;min-width:0;box-sizing:border-box}
.pon-calculator-dialog output{display:block;margin:12px 0;padding:8px;background:#edf8f5;border-radius:6px}
@media(max-width:650px){.pon-calculator-button{max-width:50px;white-space:normal;line-height:1.1;padding:4px}}

.pon-calculator-dialog{border:1px solid #c6dce0;border-radius:14px;padding:20px;color:#244753}.pon-calculator-dialog h2{margin:0 0 14px}.pon-loss-field{grid-column:1/-1}.pon-power-result{margin:12px 0;padding:12px;border:1px solid #c5e4db;border-radius:10px;background:#edf8f5}.pon-power-result span,.pon-power-result small{display:block}.pon-power-result output{margin:3px 0;padding:0;font-size:25px;font-weight:700;font-variant-numeric:tabular-nums}

.pon-calculator-fields label>span{display:flex;align-items:center;gap:5px}.pon-splitter-icon{color:#28746b;flex:none}

.pon-calculator-dialog.pon-layer-calculator{position:fixed;inset:auto;margin:0;max-width:100vw;max-height:100dvh;overflow:auto;background:#f7fbfc}
.pon-layer-heading,.pon-layer-toolbar,.pon-layer-row>header,.pon-layer-row h3{display:flex;align-items:center;gap:8px}
.pon-layer-heading,.pon-layer-row>header{justify-content:space-between}
.pon-layer-heading h2,.pon-layer-row h3{margin:0}
.pon-layer-toolbar{align-items:end;flex-wrap:wrap;margin-top:14px}
.pon-layer-toolbar label{display:grid;gap:4px}
.pon-layer-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:12px}
.pon-layer-row{padding:12px;border:1px solid #d1e2e6;border-radius:10px;background:#fff}
.pon-layer-row .pon-calculator-fields{margin-top:10px}
.pon-layer-row .pon-power-result{margin-bottom:0}

.pon-category{display:flex;gap:6px;margin-top:14px}
.pon-category button[aria-pressed=true]{background:#dff2ec;border-color:#92c9bd;color:#215c53}
.pon-ratio-panel{margin-top:12px;max-width:570px}
.pon-calculator-fields [data-pon-custom][hidden],.pon-layer-toolbar [data-pon-add][hidden]{display:none}
.pon-ratio-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}

.olt-automation-dialog{width:min(760px,calc(100vw - 24px));max-height:90dvh;overflow:auto;box-sizing:border-box}
.olt-automation-dialog header{display:flex;justify-content:space-between;align-items:center;gap:10px}
.olt-automation-dialog fieldset{margin:10px 0;padding:10px;border:1px solid #c7dce5;border-radius:8px}
.olt-automation-devices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;max-height:220px;overflow:auto;margin:8px 0}
.olt-automation-devices label{display:flex;align-items:center;gap:5px;font-size:12px}
.olt-automation-devices input{width:auto}
.olt-automation-dialog .actions{display:flex;flex-wrap:wrap;gap:6px}
.olt-automation-dialog[data-map-automation]{padding:12px}
.olt-automation-dialog[data-map-automation] h2{margin:0;font-size:19px}
.olt-automation-dialog[data-map-automation] header h2{display:flex;align-items:center;gap:8px}
.olt-automation-dialog[data-map-automation] header h2>svg{color:#2d6d91;flex-shrink:0}
.olt-automation-dialog[data-map-automation] header h2{gap:10px;padding:3px 0 7px}
.olt-automation-dialog[data-map-automation] header .automation-maximize{margin-left:auto;font-size:21px;width:34px;height:32px;display:grid;place-items:center;padding:0;border:1px solid #cbdce8;border-radius:7px;color:#315e81;background:#eef5fa}
.automation-title-mark{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;flex:0 0 36px;border-radius:10px;background:linear-gradient(140deg,#e8f5ff,#e9e9ff);border:1px solid #c9d8ef;color:#3c5ea3;box-shadow:0 2px 5px #325a8b12}
.automation-title-word{position:relative;display:inline-block;padding:1px 5px 5px 0;font-family:"Trebuchet MS","Segoe UI Variable Display","Segoe UI",sans-serif;font-size:29px;font-weight:800;font-style:italic;letter-spacing:-.7px;line-height:1.15;color:#244c7c;background:linear-gradient(110deg,#176992 8%,#425ca9 58%,#8054a7);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 1px 1px #355d8212)}
.automation-title-word::after{content:"";position:absolute;left:2px;bottom:0;width:48px;height:3px;border-radius:3px;background:linear-gradient(90deg,#2181ad,#7663bb);transform:skewX(-18deg)}
.olt-automation-dialog[data-map-automation] h3{margin:8px 0;font-size:14px}
.olt-automation-dialog[data-map-automation] p{margin:6px 0;line-height:1.4}
.olt-automation-dialog[data-map-automation] [data-worker-services]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:4px 8px}
.olt-automation-dialog[data-map-automation] [data-worker-services]>h3,
.olt-automation-dialog[data-map-automation] [data-worker-services]>p{grid-column:1/-1;order:-1}
.olt-automation-dialog[data-map-automation] [data-expanded-service]{grid-column:1/-1;order:1}
.olt-automation-dialog[data-map-automation] [data-device-telegram-settings],
.olt-automation-dialog[data-map-automation] [data-command-settings]{margin:10px 0!important;padding:10px!important}
.olt-automation-dialog[data-map-automation] table{line-height:1.35}
.olt-automation-dialog[data-map-automation] button{min-height:30px;padding:5px 9px}
.olt-automation-dialog[data-map-automation] [data-command-settings]>summary{font-weight:600;cursor:pointer}
.automation-module-tabs{display:flex;gap:5px;flex-wrap:wrap;border-bottom:1px solid #dce6ee;padding-bottom:7px}
.automation-module-tabs button[aria-selected="true"]{background:#245d82;color:#fff;border-color:#245d82}
.automation-table-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:9px 0}
.automation-table-controls input{width:min(360px,100%);min-height:32px;border:1px solid #cbdbe5;border-radius:7px;padding:5px 9px;box-sizing:border-box}
.automation-table-scroll{width:100%;max-width:100%;box-sizing:border-box;max-height:none;overflow:auto;border:1px solid #dce6ee;border-radius:8px;background:#fff}
.automation-data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;line-height:1.3}
.automation-data-table th{position:sticky;top:0;z-index:1;background:#edf3f8;color:#456174;font-weight:600;text-align:left;white-space:nowrap;padding:6px 8px;border-bottom:1px solid #d6e2eb}
.automation-data-table td{padding:5px 8px;border-bottom:1px solid #e7eef3;vertical-align:middle}
.automation-data-table th:first-child,.automation-data-table td:first-child{width:auto;min-width:170px;overflow-wrap:anywhere}
.automation-data-table th+th,.automation-data-table td+td{border-left:1px solid #dce6ee}
.automation-data-table tbody tr td{border-bottom-color:#dce6ee}
.automation-data-table tbody td:first-child{background:#f4f8fc}
.automation-data-table tbody tr:last-child td{border-bottom:0}
.automation-data-table tbody tr:nth-child(even){background:#f8fbfd}
.automation-data-table tbody tr:hover{background:#eef6fc}
.automation-device-meta{display:block;font-size:11px;color:#627b8c;margin-top:3px;overflow-wrap:anywhere}
.automation-chat-id{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;max-width:240px}
.automation-row-actions{white-space:nowrap}
.automation-row-actions button+button{margin-left:5px}
.automation-row-actions button{border:1px solid #c6d8e5;border-radius:6px;background:#fff;color:#275675;font-weight:600}
.automation-badge{display:inline-block;font-size:11px;line-height:1.4;padding:3px 7px;border-radius:5px;white-space:nowrap;font-weight:600}
.automation-badge.is-enabled{background:#e4f4eb;color:#216340}
.automation-badge.is-muted{background:#edf1f4;color:#5d6c77}
.automation-badge.is-info{background:#e7f1fb;color:#285d89}
.automation-badge.is-warning{background:#fff2d9;color:#855c0f}
.automation-badge.is-danger{background:#fde9e8;color:#a03832}
.automation-data-table th.automation-alarm-heading{text-align:center;border-left:1px solid #d1dfe9;border-right:1px solid #d1dfe9}
.automation-data-table th.automation-alarm-heading.is-olt{background:#e8f1fb;color:#315e85}
.automation-data-table th.automation-alarm-heading.is-onu{background:#eeeaf8;color:#66518a}
.automation-data-table td.automation-alarm-cell{text-align:center;min-width:60px;width:1%;padding:5px 7px;border-left:1px solid #dce6ee;border-right:1px solid #dce6ee;background:#f7fafe}
.automation-data-table td.automation-alarm-cell.is-onu{background:#faf8fd}
.automation-alarm-cell .automation-badge{min-width:34px;padding:2px 6px;box-sizing:border-box;border:1px solid #c8ddd1}
.automation-data-table .automation-col-state,.automation-data-table .automation-col-service,.automation-data-table .automation-col-token{width:1%;padding:5px 7px;text-align:center}
.automation-data-table th.automation-col-state,.automation-data-table th.automation-col-service,.automation-data-table th.automation-col-token{white-space:normal;min-width:65px;max-width:88px;font-size:11px}
.automation-data-table .automation-chat-id{width:1%;min-width:105px;max-width:145px;padding:5px 7px;font-size:11px;white-space:nowrap}
.automation-data-table.automation-balanced-table{table-layout:fixed;min-width:900px}
.automation-balanced-table th,.automation-balanced-table td{width:auto!important;min-width:0!important;max-width:none!important;box-sizing:border-box}
.automation-balanced-table th{white-space:normal;overflow-wrap:break-word}
.automation-balanced-table td:first-child>strong{display:block;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;word-break:normal;max-width:none}
.automation-balanced-table .automation-row-actions{white-space:nowrap;text-align:center;padding-left:8px;padding-right:8px}
.automation-balanced-table .automation-settings-heading{text-align:center}
.automation-balanced-table .automation-row-actions button{display:inline-block;vertical-align:middle;white-space:nowrap}
.automation-balanced-table .automation-row-actions button{margin-top:2px;margin-bottom:2px;padding:4px 7px!important;font-size:11px}
.automation-balanced-table .automation-chat-id{white-space:normal;overflow-wrap:anywhere}
.automation-alarm-cell .automation-badge.is-muted{border-color:#d4dce2}
.automation-notifications-heading{display:flex;align-items:center;gap:9px;margin-bottom:3px}
.automation-section-count{font-size:11px;font-weight:600;color:#587286;background:#edf3f7;border:1px solid #dbe6ee;padding:3px 7px;border-radius:6px}
.automation-notifications-help{font-size:12px;color:#60798a}
.automation-module-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;padding:5px;margin:12px 0 8px;background:#edf3f7;border:1px solid #dbe5ed;border-radius:9px}
.automation-module-tabs button{display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:6px;background:transparent;color:#566f82;font-weight:600;min-height:38px!important}
.automation-module-tabs button:hover{background:#e3edf5;color:#245d82}
.automation-module-tabs button[aria-selected="true"]{background:#fff;color:#245d82;border-color:#bed3e3;box-shadow:0 1px 3px #173b5512}
.automation-module-icon{display:inline-flex;align-items:center;justify-content:center}
.automation-power-content{overflow:visible}
.automation-power-service{padding:9px 11px;background:#f4f8fb;border:1px solid #dce6ee;border-radius:7px;margin:8px 0}
.automation-power-table td .automation-badge{white-space:normal;overflow-wrap:anywhere;line-height:1.4;text-align:center}
.automation-power-table .automation-row-actions,.automation-power-table .automation-power-actions-heading{position:sticky;right:0;background:#f2f7fb;box-shadow:-1px 0 0 #d5e2eb;z-index:1;text-align:center}
.automation-power-table .automation-power-actions-heading{z-index:2}
.automation-power-table .automation-row-actions button{min-height:30px;border-radius:6px;font-weight:650;transition:background .15s,box-shadow .15s}
.automation-power-table .automation-row-actions .power-configure{background:#e8f1fa;color:#295d86;border-color:#afc9df}
.automation-power-table .automation-row-actions .power-configure:hover{background:#d9eafa;border-color:#7ea8cc;box-shadow:0 1px 4px #245b8320}
.automation-power-table .automation-row-actions .power-check-now{background:#24745f;color:#fff;border-color:#1c624f}
.automation-power-table .automation-row-actions .power-check-now:hover{background:#195d4c;box-shadow:0 2px 5px #1e5b442a}
.automation-power-table .automation-row-actions button:focus-visible{outline:2px solid #5b9bc7;outline-offset:2px}
.automation-power-table .automation-row-actions button:disabled{opacity:.6;cursor:wait}
.automation-power-table .power-chat-cell{font-variant-numeric:tabular-nums}
.automation-power-table .power-delivery-error{display:block;font-size:11px;line-height:1.35;margin-top:4px;color:#a23c33}
.automation-delivery-view{margin:10px 0;padding:10px;border:1px solid #d5e3ec;border-radius:8px;background:#f8fbfd;font-size:12px}
.automation-delivery-view>summary{font-weight:650;color:#315a76;cursor:pointer}
.automation-delivery-view>details{margin-top:7px;padding:7px 9px;border:1px solid #dce6ed;border-radius:6px;background:#fff}
.automation-delivery-view>details>summary{cursor:pointer;color:#315875;font-weight:600}
.automation-delivery-view>details>p{margin:8px 0 0;color:#536b79}
.automation-delivery-view>details>.automation-table-scroll{margin-top:7px;max-height:320px}
.automation-delivery-view .automation-table-scroll{margin-top:8px}
.automation-delivery-view .automation-data-table :is(th,td):first-child{width:1%;min-width:0;white-space:nowrap;font-variant-numeric:tabular-nums}
.automation-delivery-view .automation-data-table :is(th,td):nth-child(2){width:30%;min-width:190px;white-space:normal;overflow-wrap:anywhere}
.automation-power-table .automation-row-actions{padding-left:5px;padding-right:5px}
.automation-power-table .automation-row-actions button{padding:4px 5px!important;font-size:10px}
.automation-power-table .automation-row-actions button+button{margin-left:4px}
.automation-table-pagination{display:flex;align-items:center;justify-content:flex-end;gap:7px;margin-top:9px;font-size:12px;color:#536d80;flex-wrap:wrap}
.automation-table-pagination>span{margin-right:auto}
.automation-view-selector{display:flex;align-items:center;gap:6px;font-size:12px;color:#456174}
.automation-view-selector select{min-height:32px;padding:4px 8px;border:1px solid #cbdbe5;border-radius:6px;background:#fff;color:#274e69}
.olt-add-dialog.olt-message-map-dialog .olt-alarm-group-grid{grid-template-columns:repeat(4,minmax(245px,1fr));align-items:stretch;overflow-x:auto}
.olt-message-map-dialog .dialoghead{display:flex;align-items:center;gap:10px}
.olt-message-map-dialog .dialoghead h2{font-size:18px;margin:0;overflow-wrap:anywhere}
.olt-message-map-dialog .olt-message-maximize{margin-left:auto;width:33px;height:30px;padding:0;font-size:20px;background:#edf5fb;color:#315f83;border:1px solid #c4d8e8;border-radius:6px;flex-shrink:0}
.olt-alarm-group-port{border-color:#b4d8cd!important;background:#f4faf7}
.olt-port-delivery-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.olt-port-delivery-grid label{display:grid;gap:5px;font-size:12px;color:#476d71}
.olt-port-delivery-grid input,.olt-port-delivery-grid select{width:100%;min-width:0;box-sizing:border-box;padding:7px 8px;border:1px solid #c8dce1;border-radius:6px;background:#fff;color:#2b5266}
.olt-port-delivery-grid .olt-port-token{grid-column:1/-1}
.olt-port-delivery-grid .olt-port-token input{padding-right:39px;font:12px Consolas,"Courier New",monospace}
.olt-port-delivery-grid [data-port-channel][hidden]{display:none}
.olt-port-delivery-grid [data-port-token-eye]{position:absolute;right:3px;top:3px;display:grid;place-items:center;width:29px;height:29px;padding:0;border:0;background:transparent;color:#50748b}
@media(max-width:600px){.olt-port-delivery-grid{grid-template-columns:1fr}}
.automation-table-control-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.port-power-table-dialog{width:min(1400px,96vw);max-width:96vw;max-height:92dvh;overflow:auto;box-sizing:border-box;padding:14px;border:1px solid #c8d9e6;border-radius:10px;background:#f7fafc;color:#29495f}
.port-power-table-dialog::backdrop{background:#173b554d}
.port-power-table-dialog header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.port-power-table-dialog h2{margin:0;font-size:19px}
.port-power-table-dialog header p{margin:4px 0;color:#61798a;font-size:12px}
.port-power-table-toolbar{display:flex;align-items:center;gap:10px;margin:12px 0}
.port-power-table-dialog button,.port-power-table-dialog select{min-height:32px;padding:5px 9px;border:1px solid #c6d7e4;border-radius:6px;background:#fff;color:#2e5673}
.port-power-table-dialog button:disabled{opacity:.5}
.port-power-table-dialog [data-status]{font-size:12px;color:#7b5314}
.port-power-table-help{font-size:12px;line-height:1.5;color:#60798a}
.port-power-table-scroll{overflow-x:auto;border:1px solid #d6e3ec;border-radius:7px;background:#fff}
.port-power-editor-table{width:100%;min-width:1100px}
.port-power-editor-table th{text-align:center}
.port-power-editor-table thead tr:nth-child(2) th{top:30px;font-size:11px;min-width:0;width:auto}
.port-power-editor-table input[type="number"]{width:85px;box-sizing:border-box;padding:5px 6px;min-height:31px;border:1px solid #c9dce8;border-radius:5px;color:#244e70;background:#fff}
.port-power-editor-table input[type="checkbox"]{accent-color:#2c6d97;width:17px;height:17px}
.port-power-editor-table td:not(:first-child){text-align:center}
.port-power-editor-table .port-power-current{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600;color:#315d7e}
.port-power-table-dialog footer{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}
.port-power-table-dialog footer span{margin-right:auto;font-size:12px;color:#597587}
.port-power-table-dialog footer .primary{background:#2b678e;border-color:#2b678e;color:#fff}
.port-power-table-dialog{height:auto;min-height:0;padding:10px 12px}
.port-power-table-dialog form{margin:0;padding:0}
.port-power-table-dialog header{margin:0;padding:0}
.port-power-table-dialog header .port-power-maximize{margin-left:auto;width:32px;padding:0;font-size:20px;color:#315e81;background:#eef5fa}
.port-power-table-dialog header{position:relative;min-height:53px;gap:8px;border-bottom:1px solid #d8e5ee;padding-bottom:8px;margin-bottom:7px}
.port-power-heading-label{flex:0 0 210px}
.port-power-device-heading{position:absolute;left:50%;transform:translateX(-50%);max-width:calc(100% - 540px);text-align:center;padding:5px 14px;border:1px solid #c7dced;border-radius:8px;background:linear-gradient(110deg,#e7f2fc,#eef0fb);box-sizing:border-box}
.port-power-device-heading strong{display:block;font-size:18px;font-weight:750;color:#24577d;overflow-wrap:anywhere;line-height:1.3}
.port-power-device-heading small{display:block;margin-top:3px;font-size:11px;color:#617a90;line-height:1.25}
@media(max-width:760px){.port-power-table-dialog header{flex-wrap:wrap}.port-power-heading-label{flex:1}.port-power-device-heading{position:static;transform:none;order:3;width:100%;max-width:none}.port-power-device-heading strong{font-size:16px}}
.port-power-table-dialog h2{font-size:17px}
.port-power-table-toolbar{margin:6px 0;gap:8px}
.port-power-table-dialog [data-status],.port-power-table-help{margin:5px 0;font-size:11px;line-height:1.35}
.port-power-editor-table th,.port-power-editor-table td{padding:4px 6px;font-size:11px}
.port-power-editor-table thead tr:nth-child(2) th{top:25px}
.port-power-editor-table input[type="number"]{width:78px;min-height:27px;height:27px;padding:3px 5px;font-size:12px}
.port-power-table-dialog button,.port-power-table-dialog select{min-height:28px;padding:4px 8px;font-size:12px}
.port-power-table-dialog footer{padding:6px 0 0;margin-top:5px;gap:7px}
.port-power-table-dialog footer span{width:auto;margin-top:0}
.port-power-editor-table .port-power-alarm-inline{white-space:nowrap}
.port-power-editor-table .port-power-alarm-inline input[type="checkbox"]{display:inline-block;vertical-align:middle;margin:0 6px 0 0}
.port-power-editor-table .port-power-alarm-inline .automation-device-meta{display:inline-block;vertical-align:middle;margin:0}
.port-power-editor-table th:first-child,.port-power-editor-table td:first-child{width:145px;min-width:120px;max-width:180px}
.port-power-editor-table .port-power-description{min-width:160px;max-width:250px;text-align:left!important;overflow-wrap:anywhere}
.port-power-editor-table .port-power-description small{font-size:11px;color:#526d80}
.port-power-table-dialog footer{flex-wrap:nowrap;justify-content:flex-end;align-items:center}
.port-power-table-dialog footer>span{flex:1;min-width:0;width:auto}
.port-power-table-dialog footer>button{flex:0 0 auto;width:auto;white-space:nowrap;margin:0}
.port-power-table-dialog footer>button.primary{background:#216ea1;border-color:#216ea1;color:#fff;font-weight:700;min-height:33px;padding:6px 13px;box-shadow:0 2px 4px #245b8326}
.port-power-table-dialog footer>button.primary:hover{background:#195c89}
.port-power-table-dialog footer>button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;border-radius:7px;padding:6px 13px;font-weight:600;line-height:1.2}
.port-power-table-dialog footer>button.primary{background:linear-gradient(135deg,#2c7aab,#245f8c);box-shadow:0 2px 5px #245b8320}
.port-power-table-dialog footer>button[data-close]{background:#fff;color:#536c7e;border-color:#cbd9e3;box-shadow:none}
.port-power-table-dialog footer>button[data-close]:hover{background:#edf3f7}
.port-power-table-dialog footer>button.primary,.port-power-table-dialog footer>button[data-close]{min-height:36px;padding:7px 14px;font-size:13px;font-weight:700;opacity:1;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s}
.port-power-table-dialog footer>button>span{color:inherit;font:inherit;line-height:inherit;width:auto;margin:0;padding:0}
.port-power-table-dialog footer>button>svg{flex-shrink:0;color:inherit}
.port-power-table-dialog footer>button.primary{background:#1b659a;color:#fff;border:1px solid #16517d;box-shadow:0 2px 5px #1b527b25}
.port-power-table-dialog footer>button.primary:not(:disabled):hover{background:#104d7d;border-color:#0b3e67;box-shadow:0 3px 8px #1b527b40;transform:translateY(-1px)}
.port-power-table-dialog footer>button[data-close]{background:#fff;color:#294b64;border:1px solid #8eaac0;box-shadow:0 1px 3px #21476112}
.port-power-table-dialog footer>button[data-close]:not(:disabled):hover{background:#dfedf7;color:#153c59;border-color:#4a7fa5;box-shadow:0 2px 6px #1b527b25;transform:translateY(-1px)}
.port-power-table-dialog footer>button:focus-visible{outline:3px solid #91bfe0;outline-offset:2px}
.port-power-table-dialog footer>button:not(:disabled):active{transform:translateY(0);box-shadow:none}
.port-power-table-dialog footer>button.primary:disabled{background:#dde8f1;color:#486278;border-color:#b2c5d4;opacity:1;box-shadow:none;cursor:not-allowed}
.port-power-table-dialog footer>button.primary:disabled:hover{background:#d5e3ee;border-color:#8daac0}
.automation-module-tabs button[data-device-kind="router"]{--module-ink:#245e9b;--module-soft:#e8f2ff;--module-border:#aac9ed}
.automation-module-tabs button[data-device-kind="switch"]{--module-ink:#14735e;--module-soft:#e4f6ed;--module-border:#9bd3be}
.automation-module-tabs button[data-device-kind="olt"]{--module-ink:#7241a6;--module-soft:#f1eaff;--module-border:#c9b1e7}
.automation-module-tabs button[data-device-kind="power"]{--module-ink:#8b560d;--module-soft:#fff1d8;--module-border:#e6c18a}
.automation-module-tabs button[data-device-kind]{background:var(--module-soft);color:var(--module-ink);border-color:transparent;box-shadow:none;transition:background .15s,border-color .15s,box-shadow .15s}
.automation-module-tabs button[data-device-kind]:hover{border-color:var(--module-border);box-shadow:0 1px 4px #173b5514}
.automation-module-tabs button[data-device-kind][aria-selected="true"]{background:var(--module-ink);color:#fff;border-color:var(--module-ink);box-shadow:0 2px 5px #173b5526}
.automation-module-tabs button[data-device-kind]:focus-visible{outline:2px solid var(--module-ink);outline-offset:2px}
.automation-module-tabs button[data-device-kind][aria-selected="true"] .automation-module-icon{background:#ffffff20;border-radius:5px;padding:3px}
@media(max-width:540px){.automation-module-tabs button{flex-direction:column;gap:3px;font-size:11px;padding:5px!important}.automation-table-controls input{flex:1;min-width:140px}.automation-notifications-heading{flex-wrap:wrap}}
@media(max-width:600px){.olt-automation-devices{grid-template-columns:1fr}}

.power-connection-dialog{width:min(560px,calc(100vw - 32px));border:1px solid #d8e4ef;border-radius:12px;padding:18px;color:#244159;background:#f6f9fc}.power-connection-dialog::backdrop{background:#173b5540}.power-connection-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0}.power-connection-fields label{display:grid;gap:6px;font-size:13px}.power-connection-fields input,.power-connection-fields select{width:100%;box-sizing:border-box;padding:9px;border:1px solid #cbd9e5;border-radius:6px;background:white}.power-connection-actions{display:flex;justify-content:flex-end;gap:10px}@media(max-width:480px){.power-connection-fields{grid-template-columns:1fr}}

.power-connection-dialog{padding:0;max-height:calc(100dvh - 40px);box-shadow:0 22px 70px #18354d38;overflow:auto;font-family:inherit}.power-connection-dialog .olt-management-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;min-height:0;background:#edf3f8;border-bottom:1px solid #dbe5ed;gap:12px}.power-connection-dialog .olt-management-head h2{margin:0;font-size:18px;line-height:1.4}.power-connection-dialog .ui-close-control{position:static;flex:0 0 30px;width:30px;height:30px;padding:0;display:grid;place-items:center;border:0;border-radius:7px;background:transparent;color:#526b7e;font-size:24px}.power-connection-dialog .power-connection-fields{padding:20px;margin:0;gap:16px}.power-connection-dialog .power-connection-fields label{font-weight:600;color:#456073}.power-connection-dialog input,.power-connection-dialog select{font:inherit;min-height:40px;color:#203c51;outline-offset:2px}.power-connection-dialog [data-form-error]{margin:0 20px 12px}.power-connection-dialog .power-connection-actions{padding:14px 20px;border-top:1px solid #dbe5ed;background:#edf3f8}.power-connection-dialog .power-connection-actions button{padding:9px 16px;border:1px solid #cbd9e5;border-radius:7px;background:white;color:#36536a;font:inherit;font-weight:600}.power-connection-dialog .power-connection-actions button[type=submit]{background:#2d668d;color:white;border-color:#2d668d}.power-connection-dialog button:disabled{opacity:.55;cursor:wait}

#powerSystemPanel .switch-inventory-scroll{overflow:auto}#powerSystemPanel .switch-inventory-table td:nth-child(1){width:48px;text-align:center}#powerSystemPanel .switch-inventory-table td:nth-child(2){width:auto;min-width:130px}#powerSystemPanel .switch-inventory-table td:nth-child(5){width:125px;text-align:center}#powerSystemPanel .switch-inventory-table td:last-child{width:130px}#powerSystemPanel .switch-inventory-table th{text-align:center}#powerSystemPanel .olt-management-content>.olt-system{margin-top:20px}#powerSystemPanel .power-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}#powerSystemPanel .power-detail-grid>div{background:white;border:1px solid #dce6ed;border-radius:8px;padding:14px}#powerSystemPanel .power-detail-grid small{display:block;color:#71818d;margin-bottom:6px}

.power-community-field{position:relative;display:block}.power-connection-dialog .power-community-field input{padding-right:42px}.power-connection-dialog [data-community-eye]{position:absolute;right:5px;top:5px;width:30px;height:30px;display:grid;place-items:center;padding:0;border:0;background:transparent;color:#54748b;border-radius:5px}#powerSystemPanel .switch-inventory-table td:nth-child(2){width:35%;min-width:180px}#powerSystemPanel .switch-inventory-table td:nth-child(3){width:120px}#powerSystemPanel .switch-inventory-table td:nth-child(4){width:170px;white-space:normal}

.power-v3-fields{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:16px;padding-top:16px;border-top:1px solid #dbe5ed}.power-v3-fields[hidden]{display:none}@media(max-width:480px){.power-v3-fields{grid-template-columns:1fr}}

.power-model-sketch{display:block;width:100%;height:auto;max-height:65vh;object-fit:contain;padding:16px;box-sizing:border-box}#powerSystemPanel .power-model-table td:nth-child(2){width:25%;min-width:100px}#powerSystemPanel .power-model-table td:nth-child(3){width:35%}

.power-sketch-figure{margin:18px 0;padding:12px;background:#f6f9fc;border:1px solid #dce6ed;border-radius:9px}.power-sketch-figure figcaption{font-size:11px;color:#6c8190;margin:4px 0 10px}.power-sketch-figure .power-model-sketch{max-height:none;padding:0}

.power-sketch-viewer{width:94vw;max-width:1600px;padding:0;border:1px solid #bfcfda;border-radius:10px;background:#f6f9fc;color:#365269}.power-sketch-viewer::backdrop{background:#142d4370}.power-sketch-viewer-head{display:flex;align-items:center;gap:14px;padding:14px;border-bottom:1px solid #d5e1e9;flex-wrap:wrap}.power-sketch-viewer-head strong{margin-right:auto}.power-sketch-viewer-head input{width:150px}.power-sketch-viewer-head button{padding:5px 12px;border:1px solid #c4d6e2;background:white;border-radius:5px;color:#385971}.power-sketch-zoom-viewport{overflow:auto;padding:30px 0;max-height:72vh}.power-sketch-zoom-viewport img{display:block;width:100%;max-width:none;height:auto}.power-sketch-figure>button{margin-right:8px}

.power-connection-dialog .power-connection-fields>label:has(>input[name="name"]){grid-column:1/-1}

#powerSystemPanel .switch-inventory-table:not(.power-model-table) td:nth-child(5),#powerSystemPanel .switch-inventory-table:not(.power-model-table) td:nth-child(6){width:110px;text-align:center}

#powerSystemPanel>.olt-management-head{display:flex;align-items:center;justify-content:flex-start;gap:14px;padding:12px 18px;background:#f6f9fc;min-height:48px;box-sizing:border-box}#powerSystemPanel>.olt-management-head .power-system-title{display:flex;align-items:center;gap:8px;color:#315f7b;min-width:0}#powerSystemPanel>.olt-management-head h2{margin:0;white-space:nowrap;font-size:15px}#powerSystemPanel>.olt-management-head [data-close]{margin-left:auto;flex:0 0 30px}#powerSystemPanel .power-back-button{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:7px 12px;border:1px solid #c7d8e4;border-radius:6px;background:white;color:#365f79;font-size:12px;line-height:18px;font-weight:600;cursor:pointer}#powerSystemPanel .power-back-button:hover{background:#e7f1f7}#powerSystemPanel>.device-management-tabs{flex:0 0 auto}#powerSystemPanel .olt-detail-heading [data-back]{padding:7px 12px;font-size:12px;font-weight:600}@media(max-width:480px){#powerSystemPanel>.olt-management-head{gap:8px;padding:10px!important}#powerSystemPanel>.olt-management-head h2{font-size:14px!important}#powerSystemPanel .power-back-button{padding:6px 9px}}
#powerSystemPanel>.olt-management-head>[data-close].ui-close-control{position:static!important;inset:auto!important;margin:0 0 0 auto!important;align-self:center!important;flex:0 0 28px!important;transform:none!important;float:none!important}
/* Power System: calm slate and teal accents, scoped to this module. */
#powerSystemPanel{background:#f3f7fa!important;border-color:#ccdce6!important}
#powerSystemPanel>.olt-management-head{background:linear-gradient(110deg,#edf5f7,#f6f9fc 72%);border-bottom:1px solid #d3e2e9;box-shadow:inset 0 3px 0 #5b8f9a;padding-top:14px;padding-bottom:12px}
#powerSystemPanel>.olt-management-head .power-system-title>svg{box-sizing:content-box;padding:7px;border-radius:9px;background:#e0eef0;border:1px solid #c8dfe3;color:#367883}
#powerSystemPanel>.olt-management-head h2{font-weight:700;letter-spacing:.15px;color:#284d63}
#powerSystemPanel>.device-management-tabs{display:flex;gap:6px;padding:9px 18px;background:#f4f8fa;border-bottom:1px solid #dbe6ec}
#powerSystemPanel>.device-management-tabs>[role=tab]{padding:8px 16px;border:1px solid transparent;border-radius:7px;color:#6a8191;background:transparent;font-size:12px;font-weight:600;box-shadow:none}
#powerSystemPanel>.device-management-tabs>[role=tab][aria-selected=true]{background:#e3eff2;border-color:#c9dfe4;color:#286c77;box-shadow:0 1px 3px #315c7510}
#powerSystemPanel>.device-management-tabs>[role=tab]:hover{background:#eaf2f5}
#powerSystemPanel .olt-management-content{background:#f3f7fa}
#powerSystemPanel .device-inventory-pane>.olt-toolbar{margin:0 0 12px;padding:0;background:transparent;border:0}
#powerSystemPanel .device-inventory-pane>.olt-toolbar [data-add]{background:#376f83;border-color:#376f83;border-radius:7px;font-size:12px;font-weight:600;box-shadow:0 2px 4px #325f7512}
#powerSystemPanel .device-inventory-pane>.olt-toolbar [data-power-sync]{background:#fff;border:1px solid #c5d9e2;color:#436d81;border-radius:7px;font-size:12px;font-weight:600;padding:8px 14px}
#powerSystemPanel .device-inventory-pane>.olt-toolbar [data-power-sync]:disabled{opacity:.55}
#powerSystemPanel .device-auto-sync{color:#4d8a76;background:#eaf4ef;border:1px solid #d4e8dd;border-radius:20px;padding:4px 9px;font-size:10px}
#powerSystemPanel .olt-table-controls{background:#fff;padding:10px 12px;border:1px solid #d6e3eb;border-bottom:0;border-radius:8px 8px 0 0}
#powerSystemPanel .switch-inventory-scroll{border:1px solid #d6e3eb;border-radius:0 0 8px 8px;background:#fff;box-shadow:0 3px 10px #294b6008}
#powerSystemPanel .switch-inventory-table th{background:#31576b;border-right-color:#688594;height:39px;font-size:11px;font-weight:600}
#powerSystemPanel .switch-inventory-table td{padding-top:12px;padding-bottom:12px;color:#3c5d70}
#powerSystemPanel .switch-inventory-table tbody tr:nth-child(even){background:#f6f9fb}
#powerSystemPanel .switch-inventory-table tbody tr:hover{background:#edf5f7}
#powerSystemPanel .switch-inventory-table td:nth-child(2){font-weight:600;color:#2e5268}
#powerSystemPanel .olt-list-footer{padding-top:12px;padding-bottom:8px}
#powerSystemPanel .power-detail-grid>div{border-color:#d7e4eb;box-shadow:0 2px 6px #315c7506;border-top:2px solid #a9cbd2}
#powerSystemPanel .power-sketch-figure{background:#f6f9fb;border-color:#d5e3eb;border-radius:10px}
#powerSystemPanel .olt-error:empty{display:none}
@media(max-width:600px){#powerSystemPanel>.device-management-tabs{padding:8px 10px}#powerSystemPanel>.device-management-tabs>[role=tab]{padding:7px 10px}#powerSystemPanel .device-sync-actions{gap:6px}}

#powerSystemPanel button.power-auto-sync{cursor:pointer;line-height:18px;padding:5px 10px;font-weight:600}#powerSystemPanel button.power-auto-sync:hover{background:#deeee6;border-color:#bcdacb}#powerSystemPanel button.power-auto-sync.is-paused{background:#f0f3f5;color:#7a8994;border-color:#d5dfe5}

#powerSystemPanel .switch-inventory-table:not(.power-model-table){table-layout:auto}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td){vertical-align:middle}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(1){width:42px;text-align:center;padding-left:8px;padding-right:8px}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(2){width:30%;min-width:145px;text-align:left}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(3){width:120px;white-space:nowrap;text-align:left}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(4){width:85px;white-space:nowrap;text-align:left}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(5){width:145px;white-space:nowrap;text-align:left}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(6){width:110px;text-align:center}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(7){width:90px;text-align:center}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(8){width:120px;text-align:center}

#powerSystemPanel .power-monitoring-heading{margin:0 0 6px;gap:12px}#powerSystemPanel .power-monitoring-heading h3{margin:0;color:#31576b;font-size:14px}#powerSystemPanel .power-monitoring-heading small{font-weight:400;margin-left:8px;color:#718896}#powerSystemPanel .power-monitoring-detail{margin-top:0}#powerSystemPanel .power-monitoring-detail .power-sketch-figure{margin:6px 0 14px;padding:8px 12px}#powerSystemPanel .power-readings-table{width:100%;border-collapse:collapse;background:white;font-size:12px}#powerSystemPanel .power-readings-table thead th{background:#31576b;color:white;padding:10px 14px;text-align:left}#powerSystemPanel .power-readings-table tbody th{background:#f2f7fa;color:#537385;font-weight:500;width:42%;text-align:left}#powerSystemPanel .power-readings-table td,#powerSystemPanel .power-readings-table tbody th{padding:9px 14px;border-bottom:1px solid #dfe9ef;white-space:normal}#powerSystemPanel .power-readings-table td{color:#2e5268}#powerSystemPanel .power-history-note{font-size:11px;color:#7c909d;line-height:1.6;margin:10px 0}

#powerSystemPanel .power-reading-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}#powerSystemPanel .power-reading-card{background:#fff;border:1px solid #d6e4eb;border-radius:9px;overflow:hidden;box-shadow:0 2px 8px #315c7507;min-width:0}#powerSystemPanel .power-reading-card:first-child{grid-row:span 2}#powerSystemPanel .power-reading-card-head{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#edf4f7;border-bottom:1px solid #d6e4eb}#powerSystemPanel .power-reading-card-head>span{display:grid;place-items:center;width:29px;height:29px;border:1px solid #cedfe6;border-radius:7px;color:#4b7b8b;background:#e1edf1;font-size:18px}#powerSystemPanel .power-reading-card-head h4{margin:0;font-size:12px;color:#31576b}#powerSystemPanel .power-reading-card-head p{margin:3px 0 0;font-size:10px;color:#7b919f}#powerSystemPanel .power-reading-card .power-readings-table{font-size:11px;white-space:normal}#powerSystemPanel .power-reading-card .power-readings-table tbody th{width:51%;background:#fafcfd;color:#6d8594;font-weight:400;padding:11px 13px}#powerSystemPanel .power-reading-card .power-readings-table td{padding:11px 13px;font-weight:600;color:#345a70;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}#powerSystemPanel .power-reading-card tr:last-child>:is(th,td){border-bottom:0}#powerSystemPanel .power-reading-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;white-space:nowrap;border:1px solid #d6e1e7;border-radius:6px;background:#eff3f6;color:#7a8b97;font-size:10px}#powerSystemPanel .power-reading-badge:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}#powerSystemPanel .power-reading-badge.up{color:#348165;background:#edf7f1;border-color:#cee6d9}#powerSystemPanel .power-reading-badge.down{color:#b35b55;background:#fff2f0;border-color:#efd8d4}#powerSystemPanel .power-history-explanation{margin:12px 0 0;color:#8196a3;font-size:11px}#powerSystemPanel .power-history-explanation summary{cursor:pointer;font-size:11px;padding:4px 0}@media(max-width:800px){#powerSystemPanel .power-reading-groups{grid-template-columns:1fr}#powerSystemPanel .power-reading-card:first-child{grid-row:auto}}

#powerSystemPanel .power-battery-strings{border-top:1px solid #d6e4eb}#powerSystemPanel .power-battery-strings .power-readings-table{font-size:10px}#powerSystemPanel .power-battery-strings .power-readings-table thead th{padding:8px;font-size:10px}#powerSystemPanel .power-battery-strings .power-readings-table tbody th,#powerSystemPanel .power-battery-strings .power-readings-table td{width:auto;padding:8px;white-space:nowrap}#powerSystemPanel .power-battery-strings table{min-width:400px}

#powerSystemPanel .power-reading-card .power-backup-estimate-row>th{background:#edf6f5;color:#427b7c;font-weight:600}#powerSystemPanel .power-reading-card .power-backup-estimate-row>td{background:#edf6f5;color:#286e72;font-size:15px;font-weight:700}

#powerSystemPanel .power-backup-countdown{font-variant-numeric:tabular-nums;white-space:nowrap}#powerSystemPanel .power-backup-precision{display:block;font-size:9px;font-weight:400;color:#7a9399;margin-top:4px}

#powerSystemPanel .power-reading-card .power-backup-estimate-row>th{background:#e3f1f0;color:#2e6f75;font-size:12px;padding-top:15px;padding-bottom:15px}#powerSystemPanel .power-reading-card .power-backup-estimate-row>td{background:#e3f1f0;border-left:3px solid #69a5ab;padding-top:15px;padding-bottom:15px}#powerSystemPanel .power-backup-countdown{font-size:22px;font-weight:750;letter-spacing:.3px;color:#226b74}#powerSystemPanel .power-reading-card .power-priority-electricity>th,#powerSystemPanel .power-reading-card .power-priority-outage>th{font-weight:600;font-size:12px}#powerSystemPanel .power-reading-card .power-priority-electricity.is-unavailable>:is(th,td),#powerSystemPanel .power-reading-card .power-priority-outage.is-active>:is(th,td){background:#fff0ed;color:#a84f47;padding-top:14px;padding-bottom:14px}#powerSystemPanel .power-priority-electricity.is-unavailable>td,#powerSystemPanel .power-priority-outage.is-active>td{border-left:3px solid #d1877d}#powerSystemPanel .power-reading-card .power-priority-electricity.is-available>:is(th,td){background:#edf7f0;color:#3e7b61;padding-top:13px;padding-bottom:13px}#powerSystemPanel .power-priority-electricity .power-reading-badge{font-size:12px;padding:6px 10px}#powerSystemPanel .power-priority-outage.is-active>td{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}#powerSystemPanel .power-reading-card:first-child{grid-row:auto}@media(max-width:480px){#powerSystemPanel .power-backup-countdown{font-size:18px}}
#powerSystemPanel .power-reading-groups>.power-reading-card:first-child{grid-column:1;grid-row:1/span 2}
#powerSystemPanel .power-reading-groups>.power-reading-card:nth-child(2){grid-column:2;grid-row:1}
#powerSystemPanel .power-reading-groups>.power-reading-card:nth-child(3){grid-column:2;grid-row:2}
@media(max-width:800px){#powerSystemPanel .power-reading-groups>.power-reading-card:first-child,#powerSystemPanel .power-reading-groups>.power-reading-card:nth-child(2),#powerSystemPanel .power-reading-groups>.power-reading-card:nth-child(3){grid-column:auto;grid-row:auto}}
#powerSystemPanel .power-reading-groups{gap:10px}
#powerSystemPanel .power-reading-card-head{padding:8px 11px;gap:8px}
#powerSystemPanel .power-reading-card-head>span{width:24px;height:24px;font-size:15px;border-radius:6px}
#powerSystemPanel .power-reading-card-head h4{font-size:11px}
#powerSystemPanel .power-reading-card-head p{font-size:9px;margin-top:2px}
#powerSystemPanel .power-reading-card .power-readings-table tbody th,#powerSystemPanel .power-reading-card .power-readings-table td{padding:7px 11px;font-size:11px;line-height:1.35}
#powerSystemPanel .power-reading-card .power-backup-estimate-row>th,#powerSystemPanel .power-reading-card .power-backup-estimate-row>td{padding:10px 11px}
#powerSystemPanel .power-reading-card .power-priority-electricity>:is(th,td),#powerSystemPanel .power-reading-card .power-priority-outage>:is(th,td){padding:9px 11px}
#powerSystemPanel .power-reading-card .power-priority-outage.is-active>td{font-size:17px}
#powerSystemPanel .power-backup-countdown{font-size:20px}
#powerSystemPanel .power-priority-electricity .power-reading-badge{font-size:11px;padding:4px 8px}
#powerSystemPanel .power-backup-precision{font-size:9px;margin-top:3px}
#powerSystemPanel .power-monitoring-detail .power-sketch-figure{margin-bottom:10px}

#powerSystemPanel .power-reading-groups{gap:8px}#powerSystemPanel .power-reading-card{border-radius:7px}#powerSystemPanel .power-reading-card-head{padding:6px 9px;gap:7px}#powerSystemPanel .power-reading-card-head>span{width:21px;height:21px;font-size:13px}#powerSystemPanel .power-reading-card-head p{display:none}#powerSystemPanel .power-reading-card .power-readings-table tbody th,#powerSystemPanel .power-reading-card .power-readings-table td{padding:5px 9px;font-size:10px;line-height:1.3}#powerSystemPanel .power-reading-card .power-readings-table tbody th{width:54%}#powerSystemPanel .power-reading-card .power-backup-estimate-row>th,#powerSystemPanel .power-reading-card .power-backup-estimate-row>td{padding:7px 9px}#powerSystemPanel .power-reading-card .power-priority-electricity>:is(th,td),#powerSystemPanel .power-reading-card .power-priority-outage>:is(th,td){padding:6px 9px}#powerSystemPanel .power-backup-countdown{font-size:18px}#powerSystemPanel .power-priority-electricity .power-reading-badge{font-size:10px;padding:3px 7px}#powerSystemPanel .power-reading-card .power-priority-outage.is-active>td{font-size:16px}#powerSystemPanel .power-backup-precision{font-size:8px;line-height:1.2;margin-top:2px}#powerSystemPanel .power-history-explanation{margin-top:8px}#powerSystemPanel .power-monitoring-detail .power-sketch-figure{padding:6px 10px;margin-top:4px;margin-bottom:8px}

.power-alarm-fields{padding:18px 20px;border-top:1px solid #dbe5ed}.power-alarm-fields h3{margin:0 0 12px;color:#315c75;font-size:14px}.power-alarm-toggle{display:flex;gap:8px;align-items:center;font-size:12px;color:#456d80;margin:9px 0}.power-alarm-toggle input{min-height:0;width:auto}.power-notification-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.power-notification-fields label,.power-alarm-groups label{display:grid;gap:5px;font-size:11px;color:#5c7a8d}.power-notification-fields input,.power-notification-fields select,.power-alarm-interval input,.power-alarm-interval select{width:100%;box-sizing:border-box;padding:8px;border:1px solid #cbdde8;border-radius:6px;background:white}.power-alarm-groups{display:grid;grid-template-columns:1fr 1fr;gap:12px}.power-alarm-groups fieldset{border:1px solid #d4e3eb;border-radius:8px;margin:0;padding:12px}.power-alarm-groups legend{color:#3b6e82;font-weight:600;font-size:12px;padding:0 5px}.power-alarm-interval{display:grid;grid-template-columns:1fr 1fr;gap:6px}.power-alarm-groups p,.power-alarm-help{font-size:10px;color:#7b909d;line-height:1.5}.power-alarm-fields details{font-size:11px;color:#53798f;margin:12px 0}.power-alarm-fields pre{font-size:11px;white-space:pre-wrap;background:#edf4f7;padding:10px;border-radius:6px}.power-notification-fields [hidden]{display:none}@media(max-width:500px){.power-notification-fields,.power-alarm-groups{grid-template-columns:1fr}}

#powerSystemPanel .switch-row-menu{width:205px}.power-alarm-dialog{width:min(650px,calc(100vw - 32px))}.power-alarm-dialog .power-alarm-fields{border-top:0;padding-top:6px}.power-alarm-device-name{margin:12px 20px 2px;color:#6d8797;font-size:12px}.power-alarm-dialog [data-error]{margin:8px 20px}.power-alarm-groups .power-alarm-toggle{display:flex;align-items:center;gap:8px}

#powerSystemPanel .switch-row-actions .switch-row-menu>[data-power-delete]{color:#aa5048;background:#fff2ee}#powerSystemPanel .switch-row-actions .switch-row-menu>[data-power-delete]:hover{background:#fce5df}

.power-message-customize textarea{box-sizing:border-box;width:100%;resize:vertical;min-height:68px;border:1px solid #cbdde8;border-radius:6px;padding:8px;background:#fff;color:#365b70;font:11px/1.5 inherit}.power-message-customize label{margin:9px 0}.power-message-customize small,.power-message-preview small{font-size:10px;color:#7c929f;line-height:1.5}.power-message-preview pre{margin:5px 0 10px}.power-message-preview summary,.power-message-customize summary{cursor:pointer;padding:5px 0;font-weight:600}

.power-connection-dialog .power-connection-fields>label:has(>input[name="location"]){grid-column:1/-1}

.power-connection-dialog .power-connection-fields>label:has(>[name="location"]){grid-column:1/-1}.power-connection-dialog .power-connection-fields textarea[name="location"]{width:100%;box-sizing:border-box;min-height:68px;resize:vertical;padding:10px 12px;border:1px solid #cbd9e5;border-radius:6px;background:#fff;color:#203c51;font:13px/1.5 inherit}

.power-connection-dialog textarea[name="location"]::placeholder{color:#8a9aa5;opacity:.55;font-weight:400}

.power-message-customize input[data-message-symbol]{max-width:100%;width:100%;box-sizing:border-box;padding:7px 9px;border:1px solid #cbdde8;border-radius:6px;background:#fff;color:#365b70;font-size:17px;min-height:36px}

#powerSystemPanel .power-order-arrows{display:inline-flex;vertical-align:middle;gap:2px;margin-left:7px}#powerSystemPanel .power-order-arrows button{width:18px;height:22px;min-width:18px;min-height:22px;padding:0;border:1px solid #d2e0e8;border-radius:4px;background:#f2f7fa;color:#577b90;font-size:12px;line-height:18px;cursor:pointer}#powerSystemPanel .power-order-arrows button:disabled{opacity:.3;cursor:default}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):first-child{width:88px;min-width:76px;white-space:nowrap}

#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(1){width:24px;min-width:24px;padding-left:7px;padding-right:3px}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(2){width:42px;min-width:30px;padding-left:5px;padding-right:5px;text-align:center;font-weight:400}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(3){width:30%;min-width:145px;text-align:left;white-space:normal}#powerSystemPanel .switch-inventory-table:not(.power-model-table) td:nth-child(3){font-weight:600;color:#2e5268}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(4){width:120px;text-align:left;white-space:nowrap}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(5){width:85px;text-align:left}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(6){width:145px;text-align:left}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(7){width:110px;text-align:center}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(8){width:90px;text-align:center}#powerSystemPanel .switch-inventory-table:not(.power-model-table) :is(th,td):nth-child(9){width:120px;text-align:center}#powerSystemPanel .device-select-cell{justify-content:center;min-width:13px}

/* Keep legacy map controls available to existing internal actions, without duplicate sidebar UI. */
#mapLegacyInventory,#mapQuickBackup{display:none!important}

#mapPowerGadgets{flex:0 0 auto;margin:10px 10px 12px;padding:12px 10px 9px;border:1px solid #dde7ec;border-radius:12px;background:linear-gradient(145deg,#fff,#f4f8fa);box-shadow:0 2px 8px #315c7507}#mapPowerGadgets .map-power-gadget-heading{display:flex;align-items:center;justify-content:space-between;margin:0 2px 10px}#mapPowerGadgets h3{font-size:11px;font-weight:600;color:#547082;margin:0}#mapPowerGadgets [data-power-freshness]{font-size:9px;color:#8a9eaa}#mapPowerGadgets .map-power-gadget-pair{display:flex;justify-content:space-evenly;align-items:center;gap:10px}#mapPowerGadgets .map-power-orb{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;flex:0 1 96px;width:96px;height:96px;padding:7px;border-radius:50%;border:1px solid;cursor:pointer;font:inherit;transition:box-shadow .2s,border-color .2s;line-height:1.3}#mapPowerGadgets .map-power-orb.available{background:linear-gradient(145deg,#edf8f0,#dceee2);border-color:#c7dfcf;color:#43765c}#mapPowerGadgets .map-power-orb.not-available{background:linear-gradient(145deg,#fff1ee,#f2dfdb);border-color:#e5c9c3;color:#a2655d}#mapPowerGadgets .map-power-orb.available.has-devices{border-color:#83b69a;box-shadow:0 0 0 3px #6ba88812,inset 0 1px 0 #ffffffa0}#mapPowerGadgets .map-power-orb.not-available.has-devices{border-color:#c28a80;box-shadow:0 0 0 3px #bf827512,inset 0 1px 0 #ffffffa0}#mapPowerGadgets .map-power-orb:hover{filter:brightness(.98)}#mapPowerGadgets .map-power-orb-mark{font-size:15px;line-height:15px;opacity:.65}#mapPowerGadgets strong{font-size:24px;line-height:28px;font-weight:650;font-variant-numeric:tabular-nums}#mapPowerGadgets .map-power-orb>span:last-child{font-size:9px;line-height:1.2;font-weight:500}#mapPowerGadgets [data-power-gadget-note]{font-size:9px;color:#8b9da9;text-align:center;margin:10px 0 0}

#mapPowerGadgets .map-power-gadget-pair{flex-wrap:wrap;gap:10px}#mapPowerGadgets .map-power-orb .map-power-device-name{font-size:11px;line-height:16px;width:80px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:5px 0}#mapPowerGadgets .map-power-orb-mark{font-size:22px;line-height:25px}#mapPowerGadgets .map-power-orb.unknown,#mapPowerGadgets .map-power-orb.empty{background:linear-gradient(145deg,#f2f5f7,#e6ecef);border-color:#d4dee4;color:#8a9ca8}#mapPowerGadgets .map-power-orb.empty{border-style:dashed}

#mapPowerGadgets .map-power-orb .map-power-device-name{white-space:normal;line-height:13px;font-size:10px;margin:3px 0}#mapPowerGadgets .map-power-device-caption{display:block;width:77px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:8px;line-height:11px;opacity:.7;margin-bottom:2px}#mapPowerGadgets .map-power-orb-mark{font-size:18px;line-height:20px}
#mapPowerGadgets{margin:auto 8px 6px;padding:7px 8px 5px;border-radius:9px}
#mapPowerGadgets .map-power-gadget-heading{margin:0 1px 5px}
#mapPowerGadgets h3{font-size:10px}
#mapPowerGadgets [data-power-freshness]{font-size:8px}
#mapPowerGadgets .map-power-gadget-pair{gap:8px}
#mapPowerGadgets .map-power-orb{flex-basis:76px;width:76px;height:76px;padding:5px}
#mapPowerGadgets .map-power-orb-mark{font-size:15px;line-height:16px}
#mapPowerGadgets .map-power-orb .map-power-device-name{width:64px;font-size:9px;line-height:11px;margin:2px 0}
#mapPowerGadgets .map-power-device-caption{width:62px;font-size:7px;line-height:9px;margin-bottom:1px}
#mapPowerGadgets .map-power-orb>span:last-child{font-size:8px;line-height:10px}
#mapPowerGadgets [data-power-gadget-note]{font-size:8px;line-height:10px;margin:5px 0 0}

.power-gadget-setting{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:center;padding:11px;border:1px solid #d3e2e9;border-radius:7px;background:#edf5f7}.power-gadget-setting .power-gadget-checkbox{display:flex;align-items:center;gap:8px;font-size:12px}.power-gadget-setting .power-gadget-checkbox input{width:15px;min-height:0;height:15px;margin:0}.power-gadget-setting select:disabled{opacity:.5}
#mapPowerGadgets .map-power-orb{position:relative}
#mapPowerGadgets .map-power-orb .map-power-device-name{transform:translateY(-4px);margin-bottom:3px}
#mapPowerGadgets .map-power-orb-mark{line-height:13px}
#mapPowerGadgets .map-power-orb .map-power-device-name{transform:translateY(-8px)}

#mapPowerGadgets .map-power-orb{display:grid;grid-template-rows:15px 22px 20px;align-content:center;justify-items:center;gap:1px;padding:5px}#mapPowerGadgets .map-power-orb-mark{display:flex;align-items:center;justify-content:center;width:16px;height:15px;line-height:15px;font-size:15px;overflow:visible}#mapPowerGadgets .map-power-orb-mark svg{display:block;flex:none;overflow:visible}#mapPowerGadgets .map-power-orb .map-power-device-name{transform:none;margin:0;align-self:center;line-height:11px;font-size:9px}#mapPowerGadgets .map-power-orb>span:last-child{white-space:pre-line;line-height:10px;font-size:8px;text-align:center;align-self:center}
#mapPowerGadgets [data-power-gadget-note]{display:none}
#mapPowerGadgets .map-power-orb{grid-template-rows:13px 20px 20px;gap:0;align-content:start;padding:6px 5px 10px}
#mapPowerGadgets .map-power-orb-mark{height:13px;line-height:13px}
#mapPowerGadgets .map-power-orb-mark svg{width:13px;height:13px}
#mapPowerGadgets .map-power-orb .map-power-device-name{line-height:10px;align-self:center}
#mapPowerGadgets .map-power-orb>span:last-child{width:66px;max-width:66px;font-size:8px;line-height:10px;padding-bottom:1px;align-self:start}

#mapPowerGadgets .map-power-gadget-heading{gap:5px}#mapPowerGadgets h3{margin-right:auto;max-width:145px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#mapPowerGadgets .map-power-settings{display:grid;place-items:center;flex:0 0 20px;width:20px;height:20px;min-height:0;padding:0;border:0;background:transparent;color:#849ca9;border-radius:4px}#mapPowerGadgets .map-power-settings:hover{background:#e6eef2;color:#4c768c}#mapPowerGadgets .map-power-device-name{overflow:hidden;max-height:22px}#mapPowerGadgets .map-power-orb>span:last-child{overflow:hidden;max-height:20px}

.power-gadget-settings-dialog{width:min(690px,calc(100vw - 32px))}.power-gadget-text-group{display:grid;gap:10px;border:1px solid #d3e1e9;border-radius:8px;padding:12px;min-width:0;margin:0;background:#f1f7f9}.power-gadget-text-group legend{font-size:12px;color:#3f6d81;font-weight:600;padding:0 5px}.power-gadget-text-group:nth-of-type(2){background:#f5f7fa}.power-gadget-settings-dialog .power-connection-fields{align-items:start}
.power-gadget-settings-dialog{width:min(570px,calc(100vw - 28px));border-radius:9px}
.power-gadget-settings-dialog .olt-management-head{padding:10px 14px;gap:8px}
.power-gadget-settings-dialog .olt-management-head h2{font-size:14px;line-height:1.3}
.power-gadget-settings-dialog .power-connection-fields{padding:12px 14px;gap:10px}
.power-gadget-settings-dialog .power-connection-fields label{font-size:10px;gap:4px;font-weight:500}
.power-gadget-settings-dialog .power-connection-fields input{min-height:30px;height:30px;padding:5px 8px;font-size:11px;line-height:18px;border-radius:5px}
.power-gadget-settings-dialog .power-gadget-text-group{gap:8px;padding:9px;border-radius:6px}
.power-gadget-settings-dialog .power-gadget-text-group legend{font-size:11px;padding:0 4px}
.power-gadget-settings-dialog .power-connection-actions{padding:10px 14px;gap:7px}
.power-gadget-settings-dialog .power-connection-actions button{padding:6px 10px;font-size:11px;line-height:16px;border-radius:5px}
.power-gadget-settings-dialog [data-error]:empty{display:none}

/* Actual interface link status, shared by switch/router/OLT views. */
.device-live-ports .olt-model-port[data-link="UP"]{fill:#2dc77bb3;stroke:#219b62;stroke-width:1.7}
.device-live-ports .olt-model-port[data-link="DOWN"],.device-live-ports .olt-model-port[data-link="Unknown"]{fill:transparent;stroke:transparent}
.device-port-row.device-port-up>td{background-color:#eef9f3}
.device-port-row .olt-port-state.up,.device-port-link.up{color:#167348;font-weight:700}
.device-port-row .olt-port-state.down,.device-port-link.down{color:#ae4a43}
.device-port-row .olt-port-state.unknown,.device-port-link.unknown{color:#7c8b95}

.device-live-ports .olt-model-port[data-visual="UP"],#oltManagementPanel .olt-model-live-sketch .olt-model-port[data-visual="UP"]{fill:#36b983a8;stroke:#218b60;stroke-width:1.8}
.device-live-ports .olt-model-port[data-visual="DOWN"][data-sfp-present="true"],#oltManagementPanel .olt-model-live-sketch .olt-model-port[data-visual="DOWN"][data-sfp-present="true"]{fill:#d87777a3;stroke:#b94e52;stroke-width:1.8}
.device-port-row.device-port-down>td{background-color:#fff1f0}

.opm-power-groups{display:flex;align-items:flex-end;gap:7px;flex-wrap:wrap;flex:1;min-width:0}.opm-power-group{display:flex;flex-direction:column;flex:0 1 165px;min-width:145px;max-width:190px;gap:4px}.opm-range-heading{display:flex;flex-direction:column;gap:2px;padding:0 2px;color:#355468;line-height:1.35;min-width:0}.opm-range-heading strong{font-size:11px;font-weight:600;overflow-wrap:anywhere}.opm-range-heading small{font-size:10px;font-variant-numeric:tabular-nums;white-space:normal;overflow-wrap:anywhere;color:#5b7281}#oltManagementPanel .olt-opm-panel .olt-onu-controls .opm-group-pick{display:grid;grid-template-columns:auto auto;justify-content:center;align-content:center;align-items:baseline;gap:0 5px;width:100%;height:auto;min-height:30px;padding:6px 10px;background:var(--group-bg);color:var(--group-color);border:1px solid color-mix(in srgb,var(--group-color) 35%,white);border-radius:8px;text-align:center;line-height:1.25;white-space:normal;overflow:visible}#oltManagementPanel .olt-opm-panel .opm-group-pick b{font-size:13px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}#oltManagementPanel .olt-opm-panel .opm-group-pick span{font-size:11px;font-weight:600}#oltManagementPanel .olt-opm-panel .opm-group-pick small{grid-column:1/-1;font-size:9px;margin-top:1px;font-weight:400}.opm-group-pick[aria-pressed=true]{box-shadow:inset 0 0 0 2px var(--group-color)}#oltManagementPanel .olt-opm-panel .olt-onu-controls .opm-group-all{height:auto;min-height:30px;align-self:flex-end;padding:6px 8px;white-space:normal}.opm-group-all[aria-pressed=true]{background:#e4eef5!important;border-color:#6e9ebd!important}@media(max-width:640px){.opm-power-group{flex:1 1 140px;max-width:none}.opm-power-groups{flex-basis:100%}}

#oltManagementPanel .olt-opm-panel>.olt-system-head{margin:4px 0 6px;min-height:0}#oltManagementPanel .olt-opm-panel>.olt-system-head h4{margin:4px 0;font-size:12px}#oltManagementPanel .opm-export-button:before{content:"↓";display:inline-block;margin-right:5px;font-size:13px;font-weight:700}#oltManagementPanel .opm-export-button[data-export-format="excel"]:before{color:#23784e}#oltManagementPanel .opm-export-button[data-export-format="pdf"]:before{color:#ad5045}

#oltManagementPanel .olt-opm-panel{margin-top:0;padding-top:0}#oltManagementPanel .olt-opm-panel>.olt-system-head{margin:0 0 2px;padding:0;min-height:0}#oltManagementPanel .olt-opm-panel>.olt-system-head h4{margin:0;padding:0;font-size:11px;line-height:16px}#oltManagementPanel .olt-opm-panel>.olt-onu-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:5px;margin:0;padding:5px 7px}#oltManagementPanel .olt-opm-panel .opm-power-groups{flex:1 0 auto;flex-wrap:nowrap;min-width:max-content;gap:6px}#oltManagementPanel .olt-opm-panel .opm-power-group{flex:0 0 145px;min-width:135px;max-width:155px;gap:2px}#oltManagementPanel .olt-opm-panel .olt-onu-controls>label{flex:0 0 155px;min-width:140px}#oltManagementPanel .olt-opm-panel .opm-group-all{flex:none;white-space:nowrap}#oltManagementPanel .olt-opm-panel .opm-range-heading small{white-space:normal;font-size:9px}#oltManagementPanel .olt-opm-panel .opm-power-groups>.olt-port-note:empty{display:none}

.opm-range-settings{width:min(460px,94vw);padding:14px;max-height:90vh;overflow:auto}.opm-range-settings form>h3{margin:0 0 8px;font-size:15px}.opm-range-settings fieldset legend{font-size:11px;font-weight:600;padding:0 4px}.opm-range-settings fieldset label{display:flex;flex-direction:column;gap:3px;margin:0;font-size:10px}.opm-range-settings fieldset input{box-sizing:border-box;width:100%;min-width:0;height:30px;min-height:30px;padding:4px 7px;font-size:12px}.opm-range-settings form>p{font-size:10px;margin:7px 0;line-height:1.4}.opm-range-settings form>button{font-size:11px;padding:6px 10px}

.router-sync-settings.opm-range-settings{width:min(430px,94vw);padding:12px}.router-sync-settings.opm-range-settings form{display:grid;gap:6px}.opm-range-settings form>h3{margin:0 0 3px;font-size:14px}.opm-range-settings .opm-range-settings-table{width:100%;border-collapse:separate;border-spacing:0;border:1px solid #d3e0e8;border-radius:6px;overflow:hidden;margin:0;font-size:11px}.opm-range-settings-table th{background:#edf3f7;color:#45677c;font-weight:600;padding:7px 6px;text-align:left;border-bottom:1px solid #d3e0e8}.opm-range-settings-table th:first-child,.opm-range-settings-table td:first-child{width:42px;text-align:center}.opm-range-settings-table td{padding:5px 6px;border-bottom:1px solid #dce6eb}.opm-range-settings-table tr:last-child td{border-bottom:0}.opm-range-settings-table td input{box-sizing:border-box;width:100%;min-width:0;height:28px;padding:4px 7px;border:1px solid #c5d6e0;border-radius:4px;background:white;color:#31566c;font-size:12px}.opm-range-settings .opm-range-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:2px}.opm-range-settings .opm-range-actions button{width:auto;font-size:11px;padding:6px 10px;border:1px solid #c6d7e1;border-radius:5px;background:#edf3f7;color:#31566c}.opm-range-settings .opm-range-actions button[type=submit]{background:#287d62;color:white;border-color:#287d62}.opm-range-settings p[role=alert]:empty{display:none}

#oltManagementPanel .olt-port-information{margin-top:0;padding:6px 8px}#oltManagementPanel .olt-port-information>.router-port-alarm-list{margin:0;padding:0}#oltManagementPanel .olt-port-information .device-port-info-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0;padding:3px 0;min-height:34px;box-sizing:border-box}#oltManagementPanel .device-port-info-toolbar h4{margin:0;font-size:12px;line-height:18px}#oltManagementPanel .port-info-actions{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}#oltManagementPanel .port-info-actions .port-info-action{box-sizing:border-box;height:26px;min-height:26px;padding:4px 8px;font-size:10px;line-height:16px;white-space:nowrap;background:#eaf2f7;color:#315c75;border:1px solid #b9cdd9;border-radius:5px}#oltManagementPanel .olt-port-information .router-port-alarm-list>p[data-status]{font-size:9px;line-height:1.25;margin:2px 0 3px}#oltManagementPanel .olt-port-information .router-port-alarm-list>p[data-status]:empty{display:none}

#oltManagementPanel .olt-port-information .port-info-heading{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0;flex:1}#oltManagementPanel .olt-port-information .port-info-heading h4{margin:0;line-height:18px}#oltManagementPanel .olt-port-information .port-info-heading p[data-status]{font-size:9px;line-height:12px;margin:0;color:#6d8392;overflow-wrap:anywhere}#oltManagementPanel .olt-port-information .port-info-heading p[data-status]:empty{display:none}#oltManagementPanel .olt-port-information .port-info-actions{align-self:center;flex:none}

/* Compact Cisco optical readings; units remain in the column headings. */
#routerManagementPanel .router-optical-value{font-size:11px;line-height:1.35;min-width:68px;max-width:116px;white-space:normal;overflow-wrap:normal;font-variant-numeric:tabular-nums;padding:4px 6px}

/* Power System token visibility control. */
.power-notification-fields .power-token-field{position:relative;display:block}.power-notification-fields .power-token-field input{padding-right:42px}.power-connection-dialog [data-token-eye]{position:absolute;right:4px;top:3px;width:30px;height:30px;display:grid;place-items:center;padding:0;border:0;background:transparent;color:#54748b;border-radius:5px;cursor:pointer}.power-connection-dialog [data-token-eye]:focus-visible{outline:2px solid #54748b;outline-offset:1px}
.power-notification-fields .power-chat-label{width:100%;min-width:0;justify-self:stretch}
.power-notification-fields .power-token-label{grid-column:1/-1;min-width:0}
.power-notification-fields .power-token-label input{font-family:Consolas,"Courier New",monospace;font-size:12px;letter-spacing:0;width:100%}

/* Shared delivery controls: compact service and full remaining token width. */
.olt-add-dialog .olt-alarm-shared{padding:0;border:0;background:transparent}
.olt-add-dialog .olt-alarm-shared .olt-form-grid{grid-template-columns:minmax(150px,210px) minmax(0,1fr);align-items:stretch}
.olt-add-dialog .olt-alarm-shared .olt-form-grid>.olt-message-service-group,.olt-add-dialog .olt-alarm-shared .olt-form-grid>.olt-shared-bot-group{grid-column:auto!important;min-width:0;padding:12px;border:1px solid #cfdfeb;border-radius:8px;background:#f7fafc;box-sizing:border-box}
.olt-add-dialog .olt-shared-bot-group .olt-secret-field,.olt-add-dialog .olt-shared-bot-group input{width:100%;box-sizing:border-box}
@media(max-width:560px){.olt-add-dialog .olt-alarm-shared .olt-form-grid{grid-template-columns:minmax(0,1fr)}}

.olt-add-dialog .olt-form-grid>.olt-full-profile-field{grid-column:1/-1;min-width:0}
.olt-add-dialog .olt-full-profile-field input{width:100%;box-sizing:border-box}

/* Compact connection details without reducing full-width identity fields. */
.olt-add-dialog [data-olt-pane=details] .olt-form-grid{gap:8px 12px}
.olt-add-dialog [data-olt-pane=details] .olt-form-grid>label{gap:4px;margin:0;font-size:12px}
.olt-add-dialog [data-olt-pane=details] input,.olt-add-dialog [data-olt-pane=details] select{height:34px;min-height:34px;padding:6px 9px;box-sizing:border-box}
.olt-add-dialog [data-olt-pane=details] .olt-notice{margin:8px 0;font-size:11px}

.olt-add-dialog [data-olt-pane=details] .olt-catalog-combo{
  border:1px solid #d6e1e9;
  border-radius:6px;
  background:#fff;
}
.olt-add-dialog [data-olt-pane=details] .olt-catalog-combo:focus-within{
  border-color:#779fb8;
  box-shadow:0 0 0 2px #779fb826;
}
.olt-add-dialog [data-olt-pane=details] .olt-catalog-combo>input{
  border:0;
  border-radius:5px 0 0 5px;
}
.olt-add-dialog [data-olt-pane=details] .olt-catalog-combo>input:focus,
.olt-add-dialog [data-olt-pane=details] .olt-catalog-dropdown-toggle:focus{
  outline:0;
  box-shadow:none;
}
.olt-add-dialog [data-olt-pane=details] .olt-catalog-dropdown-toggle{
  border:0;
  border-radius:0 5px 5px 0;
  background:transparent;
}
.olt-add-dialog [data-olt-pane=details] .olt-catalog-dropdown-toggle:is(:hover,:focus-visible){background:#edf3f7}
.olt-add-dialog [data-olt-pane=details] .olt-catalog-options{border-color:#e0e8ef;box-shadow:0 4px 12px #223b4d12}

/* Soft tints distinguish the OLT setup tabs. */
.olt-add-dialog .olt-form-tabs:has(#oltDetailsTab){
  gap:8px;
  padding:4px;
  background:#f5f7fa;
}
.olt-add-dialog .olt-form-tabs #oltDetailsTab{
  --tab-tint:#edf3f9;
  --tab-text:#3b5875;
  --tab-accent:#6486a6;
}
.olt-add-dialog .olt-form-tabs #oltAlertsTab{
  --tab-tint:#f2eef6;
  --tab-text:#5e4d73;
  --tab-accent:#8a779f;
}
.olt-add-dialog .olt-form-tabs :is(#oltDetailsTab,#oltAlertsTab){
  background:transparent;
  color:var(--tab-text);
}
.olt-add-dialog .olt-form-tabs :is(#oltDetailsTab,#oltAlertsTab)[aria-selected=true]{
  background:var(--tab-tint);
  box-shadow:inset 0 -2px var(--tab-accent);
}
.olt-add-dialog .olt-form-tabs :is(#oltDetailsTab,#oltAlertsTab):focus-visible{
  outline-color:var(--tab-accent);
}

.olt-port-message-section{display:grid;gap:8px;min-width:0}
.olt-port-message-section+.olt-port-message-section{margin-top:12px}
.olt-port-message-section h4{margin:0;padding:5px 8px;border-radius:5px;background:#edf3f9;color:#3b5875;font-size:12px}
.olt-port-message-section+.olt-port-message-section h4{background:#f2eef6;color:#5e4d73}

.olt-sfp-power-preview{font-size:12px;color:#5e4d73}
.olt-sfp-power-preview summary{cursor:pointer;font-weight:600}
.olt-sfp-power-preview pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0;padding:8px;border:1px solid #e3dcec;border-radius:5px;background:#faf8fc;font:inherit}

.olt-down-interval{display:grid;gap:5px;font-size:11px;font-weight:600;color:#496175}
.olt-interval-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
.olt-interval-controls>*{min-width:0;width:100%;box-sizing:border-box}

/* Give each alarm group a soft accent while keeping the controls consistent. */
.olt-add-dialog .olt-power-alert-fields:has(.olt-alarm-separated){
  min-width:0;
  border:1px solid #dce5ee;
  border-radius:12px;
  background:#f7f9fc;
}
.olt-add-dialog .olt-alarm-group-olt{
  --alarm-tint:#edf4fb;
  --alarm-accent:#668aab;
  --alarm-heading:#315675;
}
.olt-add-dialog .olt-alarm-group-port{
  --alarm-tint:#eef5f3;
  --alarm-accent:#648f84;
  --alarm-heading:#365f57;
}
.olt-add-dialog .olt-alarm-group-onu{
  --alarm-tint:#f3eff8;
  --alarm-accent:#8b78a5;
  --alarm-heading:#594873;
}
.olt-add-dialog .olt-alarm-separated .olt-alarm-group{
  border-color:#dce5ee;
  border-radius:10px;
  box-shadow:0 2px 5px #293e5810;
}
.olt-add-dialog .olt-alarm-separated .olt-alarm-group h3{
  display:flex;
  align-items:center;
  min-height:32px;
  padding:6px 9px;
  border:0;
  border-inline-start:3px solid var(--alarm-accent);
  border-radius:5px;
  background:var(--alarm-tint);
  color:var(--alarm-heading);
  line-height:1.35;
  box-sizing:border-box;
}
.olt-add-dialog .olt-alarm-shared .olt-form-grid>.olt-message-service-group,
.olt-add-dialog .olt-alarm-shared .olt-form-grid>.olt-shared-bot-group{
  border-color:#dce5ee;
  background:#fff;
}
.olt-add-dialog .olt-alarm-group :is(.olt-interval-controls > *,label[data-message-channel=telegram] > input):focus-visible{
  outline:2px solid #8baac4;
  outline-offset:1px;
}

/* Switch message setup pairs device and port alarms in the map workspace. */
.switch-message-map-dialog > form{max-width:none}
.switch-message-map-dialog .dialoghead .olt-message-maximize{
  margin-inline-start:auto;
  width:32px;
  height:28px;
  border:1px solid #d3e0eb;
  border-radius:5px;
  background:#edf4fa;
  color:#315c75;
  cursor:pointer;
}
.switch-message-map-dialog .dialoghead .olt-message-maximize:hover{background:#e0edf7}
.switch-message-map-dialog .dialoghead .olt-message-maximize:focus-visible{outline:2px solid #648aab}
.switch-alarm-panels{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));
  gap:12px;
  align-items:start;
}
.switch-alarm-panels > [data-pane]{
  min-width:0;
  padding:12px;
  border:1px solid #dce5ee;
  border-radius:10px;
  background:#fff;
}
.switch-alarm-panels > [data-pane] > h3{
  margin:0 0 10px;
  padding:7px 9px;
  border-inline-start:3px solid #668aab;
  border-radius:5px;
  background:#edf4fb;
  color:#315675;
  font-size:13px;
}
.switch-alarm-panels > [data-pane=port] > h3{
  border-color:#648f84;
  background:#eef5f3;
  color:#365f57;
}
.switch-alarm-panels .switch-repeat-controls > :is(input,select){
  height:36px;
  min-height:36px;
  width:100%;
  margin-top:4px;
  box-sizing:border-box;
}
.switch-alarm-panels .field textarea{width:100%;box-sizing:border-box}

.switch-setup-dialog.switch-message-map-dialog .dialoghead{display:flex;align-items:center;gap:8px}
.switch-setup-dialog.switch-message-map-dialog .dialoghead > :is(.olt-message-maximize,[data-cancel]){
  position:static;
  inset:auto;
  transform:none;
  translate:none;
  flex:0 0 32px;
  align-self:center;
  display:grid;
  place-items:center;
  width:32px;
  min-width:32px;
  height:32px;
  min-height:32px;
  margin:0;
  padding:0;
  box-sizing:border-box;
  line-height:1;
}
.switch-setup-dialog.switch-message-map-dialog .dialoghead > .olt-message-maximize{margin-inline-start:auto}

.switch-alarm-panels .switch-sfp-settings{margin-top:8px;padding:6px 10px;border:1px solid #c5ddd6;border-radius:6px;background:#eef5f3;color:#365f57;cursor:pointer}
.switch-alarm-panels .switch-sfp-settings:hover{background:#e2efeb}
.switch-alarm-panels .switch-sfp-settings:focus-visible{outline:2px solid #648f84;outline-offset:2px}
.switch-setup-dialog .switch-alarm-panels .olt-power-alert-fields{padding:0;border:0;min-width:0;margin:0}

.switch-messages-layout .switch-common-delivery .olt-form-grid{grid-template-columns:minmax(0,1fr)}
.switch-messages-layout .switch-common-delivery .olt-form-grid label{width:100%;box-sizing:border-box}
.switch-setup-dialog .switch-alarm-panels .olt-alarm-layout{display:flex;flex-direction:column;gap:10px}
.switch-setup-dialog .switch-alarm-panels .olt-alarm-layout .olt-form-grid{grid-template-columns:minmax(0,1fr)}

.switch-messages-layout .switch-alarm-panels{align-items:start}
.switch-messages-layout .switch-alarm-panels > .olt-alarm-group{padding:12px;gap:9px}
.switch-messages-layout .switch-alarm-panels .field{margin:0}
.switch-messages-layout .switch-alarm-panels .field textarea{min-height:0}
.switch-message-section-title{margin:0;padding:5px 8px;border-radius:5px;background:#edf3f9;color:#3b5875;font-size:12px}
.switch-message-preview-toggle + .switch-message-section-title{background:#f2eef6;color:#5e4d73}

.olt-add-dialog.switch-messages-layout .switch-alarm-panels{display:grid;gap:12px}
.olt-add-dialog.switch-messages-layout .switch-common-delivery{padding:10px 12px;border:1px solid #dce5ee;background:#f7f9fc}
.olt-add-dialog.switch-messages-layout .switch-common-delivery .olt-form-grid{grid-template-columns:minmax(0,1fr)}
.olt-add-dialog.switch-messages-layout .switch-alarm-panels .olt-alert-message-editor textarea{min-height:80px}

.switch-setup-dialog .switch-setup-shared .olt-form-grid{grid-template-columns:minmax(0,1fr)}
.switch-setup-dialog .switch-alarm-panels .olt-alarm-controls,.switch-setup-dialog .switch-alarm-panels .olt-alarm-message-card{width:100%;max-width:none;box-sizing:border-box}
.switch-setup-dialog .switch-alarm-panels > [data-pane]{display:flex;flex-direction:column;gap:9px}
.switch-setup-dialog .switch-alarm-panels .olt-alert-message-editor textarea{min-height:80px;width:100%;box-sizing:border-box}

/* Switch alarm delivery controls share a compact row above the two destinations. */
.olt-add-dialog.switch-messages-layout .switch-common-delivery .olt-form-grid,
.switch-setup-dialog .switch-setup-shared .olt-form-grid{
  grid-template-columns:minmax(0,1fr) minmax(0,2fr);
  gap:8px;
  margin:4px 0;
}
.switch-messages-layout .switch-common-token,
.switch-setup-dialog .switch-setup-shared .olt-alert-recipient{grid-column:auto}
.switch-setup-dialog .switch-alarm-panels .olt-alarm-controls,
.switch-setup-dialog .switch-alarm-panels .olt-alarm-message-card{padding:6px 8px}
.switch-alarm-panels .switch-destination > input{
  width:100%;box-sizing:border-box;background:#f0f6fc;border:1px solid #c6daeb;
  border-radius:5px;height:32px;padding:5px 9px;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels .olt-alert-message-editor textarea{min-height:72px;padding:6px 8px}
@media(max-width:600px){
 .olt-add-dialog.switch-messages-layout .switch-common-delivery .olt-form-grid,
 .switch-setup-dialog .switch-setup-shared .olt-form-grid{grid-template-columns:minmax(0,1fr)}
}

/* Equal width and spacing for the controls in both Switch alarm groups. */
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels > [data-pane]{
  align-items:stretch;
  gap:8px;
  padding:12px;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels > [data-pane] > h3{margin:0}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels > [data-pane] > :is(.olt-alert-message-editor,.switch-message-preview-toggle,.olt-sfp-power-preview,.olt-down-interval,.switch-destination){
  width:100%;min-width:0;margin:0;box-sizing:border-box;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels > [data-pane] > :is(.olt-down-interval,.switch-destination,.olt-alert-message-editor){
  display:grid;gap:5px;font-size:11px;font-weight:600;color:#496175;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels .olt-interval-controls > :is(input,select){
  width:100%;height:32px;min-height:32px;margin:0;padding:5px 9px;
  box-sizing:border-box;border:1px solid #d0dfeb;border-radius:5px;background:#f9fbfd;color:#31546f;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels .olt-alert-message-editor textarea{
  width:100%;height:76px;min-height:76px;margin:0;box-sizing:border-box;
  font:12px/1.4 system-ui;
}
.switch-setup-dialog .switch-destination[hidden]{display:none!important}
.switch-setup-dialog .switch-message-preview-toggle > p{margin:0;padding:0 10px 8px;white-space:pre-wrap}


:is(.switch-setup-dialog.switch-message-map-dialog > .dialoghead,.switch-messages-layout.switch-message-map-dialog > form > .dialoghead){
  display:grid;grid-template-columns:minmax(0,1fr) 32px 32px;align-items:center;gap:8px;
}
:is(.switch-setup-dialog.switch-message-map-dialog > .dialoghead,.switch-messages-layout.switch-message-map-dialog > form > .dialoghead) > :is(.olt-message-maximize,[data-cancel],[data-close]){
  position:static!important;inset:auto!important;transform:none!important;translate:none!important;
  display:grid;place-items:center;align-self:center;justify-self:center;
  width:32px;min-width:32px;height:32px;min-height:32px;
  box-sizing:border-box;margin:0!important;padding:0;line-height:1;
}

:is(.switch-setup-dialog.switch-message-map-dialog > .dialoghead,.switch-messages-layout.switch-message-map-dialog > form > .dialoghead) > :is(.olt-message-maximize,[data-cancel],[data-close]){
  width:32px!important;min-width:32px!important;max-width:32px!important;
  height:32px!important;min-height:32px!important;max-height:32px!important;
  border:1px solid #cddce8!important;border-radius:7px!important;
  background-color:#eef4f9!important;
  background-position:center!important;background-repeat:no-repeat!important;background-size:17px 17px!important;
  font-size:0!important;cursor:pointer;
}
:is(.switch-setup-dialog.switch-message-map-dialog > .dialoghead,.switch-messages-layout.switch-message-map-dialog > form > .dialoghead) > :is(.olt-message-maximize,[data-cancel],[data-close]):hover{background-color:#e0ebf5!important}
:is(.switch-setup-dialog.switch-message-map-dialog > .dialoghead,.switch-messages-layout.switch-message-map-dialog > form > .dialoghead) > :is([data-cancel],[data-close]){background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M5%205l10%2010M15%205L5%2015%22%20fill%3D%22none%22%20stroke%3D%22%2336546c%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E")!important}
:is(.switch-setup-dialog.switch-message-map-dialog > .dialoghead,.switch-messages-layout.switch-message-map-dialog > form > .dialoghead) > .olt-message-maximize{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M8%203H3v5m9-5h5v5M3%2012v5h5m9-5v5h-5%22%20fill%3D%22none%22%20stroke%3D%22%2336546c%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E")!important}
:is(.switch-setup-dialog.switch-message-map-dialog > .dialoghead,.switch-messages-layout.switch-message-map-dialog > form > .dialoghead) > .olt-message-maximize[aria-pressed=true]{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M7%206V3h10v10h-3M3%207h10v10H3z%22%20fill%3D%22none%22%20stroke%3D%22%2336546c%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E")!important}

:is(.switch-setup-dialog,.switch-messages-layout) .switch-common-delivery .olt-secret-field{
  display:block;position:relative;width:100%;min-width:0;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-common-delivery .olt-secret-field > input{
  width:100%;box-sizing:border-box;padding-inline-end:40px;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-common-delivery .olt-secret-field > :is([data-switch-token],.switch-shared-token-eye){
  position:absolute;inset:auto 4px auto auto;top:50%;transform:translateY(-50%);
  display:grid;place-items:center;width:28px;height:26px;min-height:0;
  box-sizing:border-box;margin:0;padding:0;
}

/* Switch alarm previews use quiet colors to distinguish link and optical messages. */
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels > [data-pane=switch]{border-color:#d9e5f0;background:#fbfdff}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels > [data-pane=port]{border-color:#d9e7e2;background:#fbfdfc}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels details{
  border:1px solid #dae7e2;border-radius:7px;background:#f5faf8;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels details > summary{
  padding:7px 10px;color:#365f57;font-size:12px;font-weight:650;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels details > pre{
  margin:0 8px 8px;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels pre[data-preview]{
  padding:8px 10px;border:1px solid var(--preview-border,#dce7ee);
  border-inline-start:3px solid var(--preview-accent,#8aa7bc);
  border-radius:5px;background:var(--preview-bg,#f4f8fb);color:#344f62;
  white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.5 system-ui,sans-serif;
}
:is(.switch-setup-dialog,.switch-messages-layout) [data-preview=port-down]{
  --preview-bg:#fbf2ef;--preview-border:#f0ded7;--preview-accent:#ba8879;
}
:is(.switch-setup-dialog,.switch-messages-layout) [data-preview=port-up]{
  --preview-bg:#eef7f2;--preview-border:#dbece2;--preview-accent:#78a28a;
}
:is(.switch-setup-dialog,.switch-messages-layout) [data-preview=sfp-tx]{
  --preview-bg:#f1f5fc;--preview-border:#dce7f5;--preview-accent:#809ac0;
}
:is(.switch-setup-dialog,.switch-messages-layout) [data-preview=sfp-rx]{
  --preview-bg:#f5f1fa;--preview-border:#e8e0f2;--preview-accent:#9a88b7;
}

:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels > [data-pane] > details{
  width:100%;min-width:0;box-sizing:border-box;margin:0;padding:0;
  border:1px solid #dae7e2;border-radius:7px;background:#f5faf8;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels > [data-pane] > details > summary{
  box-sizing:border-box;min-height:32px;padding:7px 10px;
  font:600 12px/18px system-ui,sans-serif;
}
:is(.switch-setup-dialog,.switch-messages-layout) .switch-alarm-panels > [data-pane] > details > pre{
  margin:0 8px 8px;
}
:is(.switch-setup-dialog,.switch-messages-layout) [data-preview=switch-down]{
  --preview-bg:#fbf2ef;--preview-border:#f0ded7;--preview-accent:#ba8879;
}
:is(.switch-setup-dialog,.switch-messages-layout) [data-preview=switch-up]{
  --preview-bg:#eef7f2;--preview-border:#dbece2;--preview-accent:#78a28a;
}

/* Router message settings share the restrained colors of the device alarm forms. */
#routerManagementPanel [data-router-pane=alarms] .olt-alarm-layout{
  grid-template-columns:minmax(0,1fr);
  gap:10px;
}
#routerManagementPanel [data-router-pane=alarms] :is(.olt-alarm-controls,.olt-alarm-message-card){
  padding:10px 12px;
  border-color:#dbe6ee;
}
#routerManagementPanel [data-router-pane=alarms] :is(.olt-alarm-controls,.olt-alarm-message-card)>h3{
  margin:0 0 9px;padding:6px 9px;border-radius:5px;
  border-inline-start:3px solid #668aab;background:#edf4fb;color:#315675;font-size:13px;
}
#routerManagementPanel [data-router-pane=alarms] .olt-alarm-message-card>h3{
  border-inline-start-color:#8b78a5;background:#f3eff8;color:#594873;
}
#routerManagementPanel [data-router-pane=alarms] .router-message-editor textarea{width:100%;box-sizing:border-box}
.router-messages-layout .router-alarm-panels .field{margin:8px 0}
.router-messages-layout .router-alarm-panels .field textarea{width:100%;box-sizing:border-box}
.router-messages-layout .switch-alarm-previews [data-preview$="-down"]{background:#fbf2ef;border-color:#f0ded7}
.router-messages-layout .switch-alarm-previews [data-preview$="-up"]{background:#eef7f2;border-color:#dbece2}
.router-messages-layout > form > .dialoghead{display:grid;grid-template-columns:minmax(0,1fr) 32px 32px}
.router-messages-layout > form > .dialoghead > :is(.olt-message-maximize,[data-close]){
  margin:0;align-self:center;justify-self:center;width:32px;height:32px;
}

#routerManagementPanel .router-setup-dialog{
  box-sizing:border-box;padding:0;border:1px solid #dce6ef;border-radius:12px;background:#fff;
}
#routerManagementPanel .router-setup-dialog::backdrop{background:#21374b40}
#routerManagementPanel .router-setup-dialog .router-setup-form{
  width:100%;max-width:none;margin:0;border:0;border-radius:0;box-shadow:none;
}
#routerManagementPanel .router-setup-dialog .router-form-heading{
  display:grid;grid-template-columns:34px minmax(0,1fr) 32px 32px;align-items:center;
}
#routerManagementPanel .router-setup-dialog .router-form-heading h2{margin:0;font-size:17px;color:#163a55}
#routerManagementPanel .router-setup-dialog .router-form-heading > :is(.olt-message-maximize,[data-close]){
  position:static!important;inset:auto!important;transform:none!important;
  justify-self:center;align-self:center;margin:0;
}
#routerManagementPanel .router-setup-dialog .olt-message-maximize{
  width:28px;height:28px;padding:0;border:1px solid #dce5eb;border-radius:7px;
  background:#edf2f6;color:#486477;font:18px/1 system-ui;cursor:pointer;
}

#routerManagementPanel .router-setup-dialog input[name=model]::placeholder{color:#526d81;opacity:.68}

#routerManagementPanel [data-router-pane=alarms] .router-alarm-panels > [data-pane]{display:flex;flex-direction:column;gap:8px}
#routerManagementPanel [data-router-pane=alarms] .router-alarm-panels .olt-alarm-message-card{border:0;padding:0}
#routerManagementPanel [data-router-pane=alarms] .router-alarm-panels .olt-alert-message-editor{margin:0}
#routerManagementPanel [data-router-pane=alarms] .router-alarm-panels .olt-alert-message-editor textarea{min-height:76px}
#routerManagementPanel [data-router-pane=alarms] .router-alarm-panels pre{margin:0;padding:8px;white-space:pre-wrap;overflow-wrap:anywhere}
#routerManagementPanel [data-router-pane=alarms] [data-router-sfp-limits]{align-self:flex-start}

#routerManagementPanel .router-setup-map-dialog .router-form-heading > :is([data-cancel],[data-close]){background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M5%205l10%2010M15%205L5%2015%22%20fill%3D%22none%22%20stroke%3D%22%2336546c%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E")!important}
.router-messages-layout > form > .dialoghead > :is([data-cancel],[data-close]){background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M5%205l10%2010M15%205L5%2015%22%20fill%3D%22none%22%20stroke%3D%22%2336546c%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E")!important}
#routerManagementPanel .router-setup-map-dialog .router-form-heading > .olt-message-maximize{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M8%203H3v5m9-5h5v5M3%2012v5h5m9-5v5h-5%22%20fill%3D%22none%22%20stroke%3D%22%2336546c%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E")!important}
.router-messages-layout > form > .dialoghead > .olt-message-maximize{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M8%203H3v5m9-5h5v5M3%2012v5h5m9-5v5h-5%22%20fill%3D%22none%22%20stroke%3D%22%2336546c%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E")!important}
#routerManagementPanel .router-setup-map-dialog .router-form-heading > .olt-message-maximize[aria-pressed=true]{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M7%206V3h10v10h-3M3%207h10v10H3z%22%20fill%3D%22none%22%20stroke%3D%22%2336546c%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E")!important}
.router-messages-layout > form > .dialoghead > .olt-message-maximize[aria-pressed=true]{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20d%3D%22M7%206V3h10v10h-3M3%207h10v10H3z%22%20fill%3D%22none%22%20stroke%3D%22%2336546c%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E")!important}
:is(#routerManagementPanel .router-setup-map-dialog .router-form-heading,.router-messages-layout > form > .dialoghead) > :is(.olt-message-maximize,[data-close]){
  position:static!important;inset:auto!important;transform:none!important;translate:none!important;
  align-self:center;justify-self:center;box-sizing:border-box;margin:0!important;padding:0!important;
  width:32px!important;min-width:32px!important;max-width:32px!important;
  height:32px!important;min-height:32px!important;max-height:32px!important;
  border:1px solid #cddce8!important;border-radius:7px!important;
  background-color:#eef4f9!important;background-position:center!important;
  background-repeat:no-repeat!important;background-size:17px 17px!important;font-size:0!important;
}

#routerManagementPanel [data-router-pane=alarms] .router-delivery-fields,.router-messages-layout .switch-common-delivery .olt-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px}
#routerManagementPanel .router-delivery-fields > label,.router-messages-layout .switch-common-delivery .olt-form-grid > label{min-width:0}
@media(max-width:460px){#routerManagementPanel [data-router-pane=alarms] .router-delivery-fields,.router-messages-layout .switch-common-delivery .olt-form-grid{grid-template-columns:minmax(0,1fr)}}

:is(#routerManagementPanel [data-router-pane=alarms],.router-messages-layout) .router-alarm-panels > [data-pane]{
  display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:12px;
}
:is(#routerManagementPanel [data-router-pane=alarms],.router-messages-layout) .router-alarm-panels > [data-pane] > :is(h3,label,details){margin:0;min-width:0}
:is(#routerManagementPanel [data-router-pane=alarms],.router-messages-layout) .router-alarm-panels .olt-interval-controls > :is(input,select){
  height:32px;min-height:32px;width:100%;margin:0;padding:5px 9px;box-sizing:border-box;
  border:1px solid #d0dfeb;border-radius:5px;background:#f9fbfd;color:#31546f;font-size:12px;
}
:is(#routerManagementPanel [data-router-pane=alarms],.router-messages-layout) .router-alarm-panels :is(.router-message-editor,.olt-alert-message-editor,.field) textarea{
  display:block;width:100%;height:76px;min-height:76px;box-sizing:border-box;margin:0;
  padding:6px 8px;border:1px solid #d0dfeb;border-radius:5px;background:#fbfdff;
  font:12px/1.4 system-ui;
}
:is(#routerManagementPanel [data-router-pane=alarms],.router-messages-layout) .router-alarm-panels details{
  box-sizing:border-box;width:100%;padding:0;border:1px solid #dae7e2;border-radius:7px;background:#f5faf8;
}
:is(#routerManagementPanel [data-router-pane=alarms],.router-messages-layout) .router-alarm-panels details > summary{padding:7px 10px;font:600 12px/18px system-ui}
#routerManagementPanel [data-router-pane=alarms] .router-alarm-panels details > p{margin:0;padding:0 10px 8px}

.router-port-alarm-identity > .dialoghead{
  display:grid;grid-template-columns:minmax(154px,1fr) minmax(0,2fr) minmax(154px,1fr);
  align-items:center;gap:8px;min-height:36px;padding:0 0 8px;
}
.router-port-alarm-identity > .dialoghead h2{margin:0;font-size:15px;line-height:1.3}
.router-port-alarm-identity > .dialoghead > .router-port-device-name{
  margin:0;text-align:center;font-size:15px;font-weight:700;color:#244e69;overflow-wrap:anywhere;
}
.router-port-alarm-identity > .dialoghead > .switch-detail-actions{justify-self:end;gap:6px}
.router-port-alarm-identity > .dialoghead [data-common]{
  width:auto;min-width:0;min-height:28px;padding:4px 7px;
  white-space:nowrap;font:600 11px/1.3 system-ui;color:#365a75;
}
.router-port-alarm-identity > .dialoghead [data-close]{
  position:static;transform:none;width:28px;min-width:28px;height:28px;
  padding:0;line-height:1;flex:none;
}
@media(max-width:600px){
 .router-port-alarm-identity > .dialoghead{grid-template-columns:minmax(0,1fr) auto}
 .router-port-alarm-identity > .dialoghead > .router-port-device-name{grid-column:1/-1;grid-row:2}
}

.router-port-alarm-identity{padding:6px 12px 12px}
.router-port-alarm-identity > .dialoghead{
  grid-template-columns:minmax(180px,1fr) minmax(0,2fr) minmax(180px,1fr);
  min-height:28px;margin:0;padding:0 0 6px;
}
.router-port-alarm-identity > .dialoghead .olt-message-maximize,
.router-port-alarm-identity > .dialoghead [data-close]{
  position:static;display:grid;place-items:center;flex:0 0 28px;
  width:28px;min-width:28px;height:28px;min-height:28px;
  box-sizing:border-box;padding:0;margin:0;border:1px solid #cddce8;
  border-radius:6px;background:#eef4f9;color:#36546c;font:18px/1 system-ui;
}
.router-port-alarm-identity > .dialoghead :is(.olt-message-maximize,[data-close]):hover{background:#e0ebf5}
@media(max-width:600px){
 .router-port-alarm-identity > .dialoghead{grid-template-columns:minmax(0,1fr) auto}
}

.router-port-alarm-identity{padding:3px 10px 10px}
.router-port-alarm-identity > .dialoghead{
  grid-template-columns:minmax(224px,1fr) minmax(0,2fr) minmax(224px,1fr);
  min-height:26px;margin:0;padding:0 0 3px;
}
.router-port-alarm-identity > .dialoghead > .switch-detail-actions{gap:4px}
.router-port-alarm-identity > .dialoghead :is([data-common],[data-refresh]){
  width:auto;min-width:0;height:26px;min-height:26px;padding:3px 6px;
  box-sizing:border-box;white-space:nowrap;font:600 11px/1.2 system-ui;
}
.router-port-alarm-identity > .dialoghead :is(.olt-message-maximize,[data-close]){
  width:26px;min-width:26px;height:26px;min-height:26px;flex-basis:26px;
}
.router-port-alarm-identity > [data-error]:empty{display:none}
@media(max-width:700px){
 .router-port-alarm-identity > .dialoghead{grid-template-columns:minmax(0,1fr) auto}
 .router-port-alarm-identity > .dialoghead > .router-port-device-name{grid-column:1/-1;grid-row:2}
}

.router-port-alarm-identity > .dialoghead{grid-template-columns:minmax(80px,1fr) minmax(0,2fr) minmax(80px,1fr)}
.router-port-alarm-toolbar{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:6px;margin:4px 0}
.router-port-alarm-toolbar > button{
  width:auto;min-height:26px;padding:3px 8px;box-sizing:border-box;
  border:1px solid #cddce8;border-radius:6px;background:#eef4f9;color:#36546c;
  white-space:nowrap;font:600 11px/1.2 system-ui;
}
.router-port-alarm-toolbar > button:hover{background:#e0ebf5}
@media(max-width:700px){
 .router-port-alarm-identity > .dialoghead{grid-template-columns:minmax(0,1fr) auto}
}

.router-port-alarm-identity{padding:0 8px 8px}
.router-port-alarm-identity > .dialoghead{
  box-sizing:border-box;height:auto;min-height:28px;margin:0;padding:2px 0;row-gap:0;
}
.router-port-alarm-identity > .dialoghead h2,
.router-port-alarm-identity > .dialoghead > .router-port-device-name{
  margin:0;padding:0;font-size:14px;line-height:17px;
}
.router-port-alarm-identity > .dialoghead :is(.olt-message-maximize,[data-close]){
  width:24px;min-width:24px;height:24px;min-height:24px;flex-basis:24px;
}
.router-port-alarm-identity > .router-port-alarm-toolbar{margin:0;padding:1px 0}
.router-port-alarm-toolbar > button{height:24px;min-height:24px;padding-block:1px}
.router-port-alarm-identity > [data-ports],
.router-port-alarm-identity .router-port-alarm-list,
.router-port-alarm-identity .router-port-alarm-list > .olt-port-scroll{margin:0;padding:0}
.router-port-alarm-identity .router-port-alarm-list > [data-status]{
  margin:0;padding:0;font-size:10px;line-height:13px;
}
.router-port-alarm-identity .router-port-alarm-list > [data-status]:empty{display:none}

.router-port-alarm-identity.automation-router-ports > .dialoghead{min-height:44px;padding-block:10px}

.router-port-alarm-identity.automation-router-ports > .router-port-alarm-toolbar{margin-top:8px}

.router-port-alarm-identity.automation-router-ports > [data-ports]{margin-top:4px}

.automation-router-ports > .router-port-alarm-toolbar{align-items:flex-end;padding-bottom:0}
.automation-router-ports > .router-port-alarm-toolbar > [data-status]{margin:0 auto 0 0;padding:0;font-size:10px;line-height:13px;flex:1 1 160px}
.automation-router-ports > .router-port-alarm-toolbar > [data-status]:empty{display:none}

#routerManagementPanel [data-router-pane=alarms] .router-delivery-fields,
.router-messages-layout .switch-common-delivery .olt-form-grid{
  grid-template-columns:minmax(0,1fr) minmax(0,2fr);
}
.router-messages-layout .switch-common-token,
#routerManagementPanel .router-delivery-fields > label[data-router-channel=telegram]{grid-column:auto}
:is(#routerManagementPanel [data-router-pane=alarms],.router-messages-layout) .router-alarm-destination{
  display:grid;gap:5px;min-width:0;font-size:11px;font-weight:600;color:#315d78;
}
:is(#routerManagementPanel [data-router-pane=alarms],.router-messages-layout) .router-alarm-destination > input{
  width:100%;height:32px;box-sizing:border-box;padding:5px 9px;border:1px solid #c6daeb;
  border-radius:5px;background:#f0f6fc;color:#234b6c;font-size:12px;
}
@media(max-width:460px){
 #routerManagementPanel [data-router-pane=alarms] .router-delivery-fields,
 .router-messages-layout .switch-common-delivery .olt-form-grid{grid-template-columns:minmax(0,1fr)}
}


#switchManagementPanel .device-management-tabs[hidden]{display:none}

#switchManagementPanel .switch-detail-sketch{margin:0}
#switchManagementPanel .switch-detail-sketch svg{display:block;width:100%;height:auto}
#switchManagementPanel .switch-data-system{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 12px;margin:6px 0}
#switchManagementPanel .switch-data-system dt{font-weight:600}
#switchManagementPanel .switch-data-system dd{margin:0;overflow-wrap:anywhere}

#switchManagementPanel .switch-header-actions:not([hidden]){display:contents}
#switchManagementPanel .switch-header-actions h3{margin:0;flex:1;min-width:0;text-align:center;font-size:14px;overflow-wrap:anywhere}
#switchManagementPanel .switch-header-actions .switch-detail-actions{margin-inline-start:auto;gap:6px;flex-wrap:wrap}
#switchManagementPanel .switch-header-actions button{padding:4px 8px;white-space:nowrap}
#switchManagementPanel .switch-header-actions [data-back]{background:#e9f2fc;color:#275b92;border-color:#bfd4ed}
#switchManagementPanel .switch-header-actions [data-refresh-switch]{background:#e8f5ed;color:#256548;border-color:#bfdfcd}
#switchManagementPanel .switch-header-actions [data-alarms]{background:#fbf1df;color:#76551a;border-color:#ead4aa}
#switchManagementPanel .switch-header-actions button:hover:not(:disabled){filter:brightness(.96)}
#switchManagementPanel>.olt-management-head:has(.switch-header-actions:not([hidden])){position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);align-items:center;min-height:40px;padding:5px 8px;gap:8px}
#switchManagementPanel>.olt-management-head:has(.switch-header-actions:not([hidden]))>div:first-child{display:none}
#switchManagementPanel .switch-header-actions>[data-back]{justify-self:start}
#switchManagementPanel .switch-header-actions>.switch-detail-actions{justify-self:end;justify-content:flex-end;margin-inline-end:38px}
#switchManagementPanel>.olt-management-head:has(.switch-header-actions:not([hidden]))>[data-close]{position:absolute;inset:5px 8px auto auto;margin:0}
@media(max-width:800px){
 #switchManagementPanel>.olt-management-head:has(.switch-header-actions:not([hidden])){grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);row-gap:4px}
 #switchManagementPanel .switch-header-actions>.switch-detail-actions{grid-column:1/-1;grid-row:2}
 #switchManagementPanel .switch-header-actions>.switch-detail-actions{margin-inline-end:0}
}
#switchManagementPanel .olt-system:has(.switch-detail-sketch){padding-top:4px;margin-top:0}
#routerManagementPanel .router-optical-lanes{display:grid;grid-template-columns:repeat(2,max-content);justify-content:center;gap:1px 8px;white-space:nowrap;font-variant-numeric:tabular-nums}

#routerManagementPanel .router-monitor-scroll td:nth-child(3){width:1%;padding-inline:5px}
#routerManagementPanel .router-monitor-scroll .router-status-badge{min-width:0;min-height:0;padding:2px 5px;font-size:10px;line-height:1.2;border-radius:4px}
#routerManagementPanel .router-monitor-scroll :is(th,td){border-inline-end:1px solid #dce6ee;border-block-end:1px solid #dce6ee}
#routerManagementPanel .router-monitor-scroll .router-optical-lanes{gap:3px;padding:2px}
#routerManagementPanel .router-optical-lanes>span{padding:1px 3px;border:1px solid #d8e4ee;border-radius:3px;background:#f5f9fc}

.olt-alarm-group-sfp{border-color:#cfc0e8!important;background:#faf7ff}

:is(.olt-add-dialog,.router-setup-dialog) .olt-form-actions:has(> button[value="apply"]){
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
}
:is(.olt-add-dialog,.router-setup-dialog) .olt-form-actions:has(> button[value="apply"]) > button{
  box-sizing:border-box;
  flex:0 0 88px;
  height:39px;
  padding:0 8px;
  text-align:center;
  font:inherit;
  font-size:13px;
  font-weight:600;
}

:is(.olt-add-dialog,.router-setup-dialog) .olt-form-actions:has(> button[value="apply"]) > button{
  background:var(--olt-action-bg);
  border-color:var(--olt-action-border);
  color:var(--olt-action-text);
}
:is(.olt-add-dialog,.router-setup-dialog) .olt-form-actions > button[value="apply"]{
  --olt-action-bg:#e4f1ff;
  --olt-action-border:#9ac4ef;
  --olt-action-text:#184f84;
}
:is(.olt-add-dialog,.router-setup-dialog) .olt-form-actions > button[value="ok"]{
  --olt-action-bg:#e5f5ec;
  --olt-action-border:#a7d5bc;
  --olt-action-text:#245e43;
}
:is(.olt-add-dialog,.router-setup-dialog) .olt-form-actions:has(> button[value="apply"]) > button:is([data-cancel],[data-close],[data-router-cancel]){
  --olt-action-bg:#ffebec;
  --olt-action-border:#edbabf;
  --olt-action-text:#8a3441;
}
:is(.olt-add-dialog,.router-setup-dialog) .olt-form-actions:has(> button[value="apply"]) > button:hover:not(:disabled){
  filter:brightness(.95);
}

.automation-olt-table .automation-chat-id{padding-inline:5px;}
.automation-olt-table th.automation-chat-id{
  background:#dcebf6;
  color:#234660;
}
.automation-olt-table td.automation-chat-id{
  background:#f1f7fc;
  color:#193b56;
  font-weight:600;
  font-variant-numeric:tabular-nums;
}

.automation-data-table.automation-balanced-table.automation-olt-table{
  table-layout:auto;
  width:max-content;
}
.automation-olt-table.automation-balanced-table .automation-chat-id{
  min-width:96px!important;
  white-space:nowrap;
  overflow-wrap:normal;
}

.automation-olt-table :is(.automation-alarm-heading,.automation-alarm-cell){
  padding-inline:4px;
  text-align:center;
}
.automation-olt-table .automation-alarm-cell .automation-badge{
  min-width:29px;
  padding-inline:4px;
}

.switch-messages-layout .switch-alarm-panels.switch-split-sfp{grid-template-columns:repeat(3,minmax(0,1fr));}
@media(max-width:850px){.switch-messages-layout .switch-alarm-panels.switch-split-sfp{grid-template-columns:1fr;}}

.router-messages-layout .router-alarm-panels.switch-split-sfp{grid-template-columns:repeat(3,minmax(0,1fr));}
@media(max-width:850px){.router-messages-layout .router-alarm-panels.switch-split-sfp{grid-template-columns:1fr;}}

.switch-shared-alarm-dialog .switch-alarm-save-status{
  min-height:1.5em;
  line-height:1.5;
  margin:8px 0;
}

:is(.switch-messages-layout,.router-messages-layout) .switch-alarm-panels.switch-split-sfp{
  align-items:stretch;
}
:is(.switch-messages-layout,.router-messages-layout) .switch-split-sfp > :is(.olt-alarm-group,[data-pane]) > .switch-alarm-test-footer,
.olt-alarm-group-grid > .olt-alarm-group > .olt-alarm-test-footer{
  display:grid;
  gap:4px;
  margin-top:auto;
}
:is(.switch-messages-layout,.router-messages-layout) .switch-alarm-test-footer > small,
.olt-alarm-test-footer > small{
  min-height:1.4em;
}

.switch-setup-dialog > .switch-inline-alarm-host > .switch-shared-alarm-dialog{position:static;inset:auto;margin:0;width:auto;max-width:none;max-height:none;overflow:visible;border:0;padding:0;}
.switch-setup-dialog > .dialoghead{position:sticky;top:0;z-index:2;background:#fff;}
.switch-setup-dialog > [hidden]{display:none!important;}

#routerManagementPanel .router-alarm-panels.router-details-sfp{grid-template-columns:repeat(3,minmax(0,1fr));}
@media(max-width:850px){#routerManagementPanel .router-alarm-panels.router-details-sfp{grid-template-columns:1fr;}}

#routerManagementPanel .router-details-sfp{align-items:stretch;}
#routerManagementPanel .router-details-sfp .olt-alarm-test-footer{display:grid;gap:4px;margin-top:auto;}

.automation-data-table.automation-balanced-table.automation-router-table{
  table-layout:auto;
  width:100%;
}
.automation-router-table .automation-chat-id{
  white-space:nowrap;
  overflow-wrap:normal;
}
.automation-router-table .automation-alarm-cell{
  padding-inline:4px;
  text-align:center;
}
.automation-router-table .automation-alarm-cell .automation-badge{
  min-width:29px;
  padding-inline:4px;
}

.automation-router-table :is(.automation-col-state,.automation-alarm-cell) .automation-badge.is-muted{
  background:#ffebec;
  color:#8a3441;
  border:1px solid #edbabf;
}

#routerManagementPanel .olt-management-content > .device-sync-toolbar{justify-content:flex-start;flex-wrap:wrap;}

#routerManagementPanel .olt-management-content > .device-sync-toolbar > .router-toolbar-actions{margin-left:auto;flex-wrap:wrap;justify-content:flex-end;}
#routerManagementPanel .router-toolbar-actions > button[hidden]{display:none;}

#routerManagementPanel .olt-management-head{position:relative;}
#routerManagementPanel .router-bulk-status{
  position:absolute;
  inset:calc(100% + 4px) 12px auto auto;
  z-index:5;
  max-width:calc(100% - 24px);
  margin:0;
  padding:5px 10px;
  border:1px solid #c4dbe8;
  border-radius:6px;
  background:#edf6fb;
  color:#23465d;
  pointer-events:none;
}
#routerManagementPanel .router-bulk-status:empty{display:none;}

:is(#switchManagementPanel,#oltManagementPanel) .olt-management-head{position:relative;}
.device-bulk-status{position:absolute;inset:calc(100% + 4px) 12px auto auto;z-index:5;max-width:calc(100% - 24px);margin:0;padding:5px 10px;border:1px solid #c4dbe8;border-radius:6px;background:#edf6fb;color:#23465d;pointer-events:none;}
.device-bulk-status:empty,.device-sync-actions > button[data-bulk-status][hidden]{display:none!important;}

#oltManagementPanel .olt-opm-panel .opm-power-groups{
  flex:1 1 480px;
  flex-wrap:wrap;
  min-width:0;
  gap:4px;
}
#oltManagementPanel .olt-opm-panel .opm-power-group{
  flex:0 1 120px;
  min-width:108px;
}
#oltManagementPanel .olt-opm-panel .olt-onu-controls .opm-group-all{
  padding-inline:6px;
}
#oltManagementPanel .olt-opm-panel .opm-export-button::before{
  margin-right:3px;
}
