:root{--fl-bg:#f1f5f9;--fl-panel:#fff;--fl-border:#dbe3ee;--fl-text:#172033;--fl-muted:#64748b;--fl-primary:#0f766e;--fl-accent:#14b8a6;--fl-shadow:0 12px 35px rgba(15,23,42,.09)}
[data-bs-theme=dark]{--fl-bg:#0b1120;--fl-panel:#111827;--fl-border:#263246;--fl-text:#e5edf7;--fl-muted:#94a3b8;--fl-primary:#2dd4bf;--fl-accent:#5eead4;--fl-shadow:0 14px 38px rgba(0,0,0,.25)}
*{box-sizing:border-box}.fiber-lab-page{margin:0;overflow:hidden;background:var(--fl-bg);color:var(--fl-text)}.fl-app{height:100dvh;display:grid;grid-template-rows:64px minmax(0,1fr) 30px;font:14px/1.4 Inter,system-ui,sans-serif}.fl-toolbar{z-index:30;display:flex;align-items:center;gap:18px;padding:0 18px;background:var(--fl-panel);border-bottom:1px solid var(--fl-border);box-shadow:0 2px 10px rgba(15,23,42,.04)}.fl-brand{display:flex;align-items:center;gap:10px;min-width:218px;color:var(--fl-text);text-decoration:none}.fl-brand span:last-child{display:flex;flex-direction:column}.fl-brand small{font-size:10px;letter-spacing:.08em;color:var(--fl-muted)}.fl-logo{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,#0f766e,#22c55e);color:#fff;font-size:19px;box-shadow:0 7px 18px rgba(15,118,110,.25)}.fl-project-name{flex:1;max-width:320px}.fl-project-name input{width:100%;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--fl-text);font-weight:650;padding:8px 10px;text-overflow:ellipsis}.fl-project-name input:focus{outline:0;border-color:var(--fl-accent);background:var(--fl-bg)}.fl-actions{display:flex;align-items:center;gap:3px;margin-left:auto}.fl-actions button,.fl-account button,.fl-canvas-controls button,.fl-mobile-tabs button{border:0;background:transparent;color:var(--fl-muted);border-radius:8px;padding:8px 10px;display:flex;align-items:center;gap:6px}.fl-actions button:hover,.fl-actions button:focus-visible,.fl-account button:hover{background:var(--fl-bg);color:var(--fl-primary)}.fl-divider{height:25px;width:1px;background:var(--fl-border);margin:0 5px}.fl-account{display:flex;align-items:center;gap:8px}.fl-role{font-size:11px;padding:4px 8px;border-radius:20px;background:rgba(20,184,166,.12);color:var(--fl-primary);font-weight:700}.fl-workspace{min-height:0;display:grid;grid-template-columns:246px minmax(0,1fr) 300px}.fl-palette,.fl-inspector{position:relative;z-index:20;min-height:0;overflow:auto;background:var(--fl-panel);padding:18px;border-color:var(--fl-border)}.fl-palette{border-right:1px solid var(--fl-border)}.fl-inspector{border-left:1px solid var(--fl-border)}.fl-panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.fl-panel-title span,.fl-dialog header span{font-size:9px;letter-spacing:.18em;color:var(--fl-primary);font-weight:800}.fl-panel-title h1,.fl-panel-title h2,.fl-dialog h2{font-size:16px;margin:1px 0 0}.fl-mobile-close{display:none;border:0;background:transparent;color:var(--fl-muted)}.fl-search{height:36px;display:flex;align-items:center;gap:7px;border:1px solid var(--fl-border);border-radius:9px;padding:0 10px;margin-bottom:16px;color:var(--fl-muted)}.fl-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--fl-text)}.fl-device-group{margin:0 0 18px}.fl-device-group h3{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--fl-muted);margin:0 0 8px}.fl-device-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.fl-palette-item{min-height:72px;border:1px solid var(--fl-border);border-radius:10px;background:var(--fl-panel);color:var(--fl-text);padding:9px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:grab}.fl-palette-item:hover{border-color:var(--device-color);box-shadow:0 5px 15px color-mix(in srgb,var(--device-color) 15%,transparent);transform:translateY(-1px)}.fl-palette-item i{font-size:20px;color:var(--device-color)}.fl-palette-item strong{font-size:11px;line-height:1.15;text-align:center}.fl-tip{display:flex;gap:8px;font-size:11px;color:var(--fl-muted);padding:10px;border-radius:8px;background:var(--fl-bg)}.fl-canvas-shell{position:relative;min-width:0;min-height:0;overflow:hidden}.fl-canvas{position:absolute;inset:0;overflow:hidden;touch-action:none;background-color:var(--fl-bg);background-image:linear-gradient(var(--fl-border) 1px,transparent 1px),linear-gradient(90deg,var(--fl-border) 1px,transparent 1px);background-size:24px 24px;outline:none}.fl-world{position:absolute;left:0;top:0;width:4000px;height:2600px;transform-origin:0 0}.fl-links,.fl-devices{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.fl-link{cursor:pointer;pointer-events:stroke}.fl-link-hit{stroke:transparent;stroke-width:16}.fl-link-line{stroke-width:4;fill:none}.fl-link.is-selected .fl-link-line{stroke-width:7;filter:drop-shadow(0 0 4px rgba(20,184,166,.6))}.fl-link-label{font-size:10px;fill:var(--fl-muted);paint-order:stroke;stroke:var(--fl-bg);stroke-width:4px}.fl-device{position:absolute;width:142px;min-height:98px;border:2px solid var(--device-color);border-radius:14px;background:var(--fl-panel);box-shadow:var(--fl-shadow);user-select:none;touch-action:none}.fl-device.is-selected{outline:3px solid color-mix(in srgb,var(--device-color) 28%,transparent);box-shadow:0 10px 26px color-mix(in srgb,var(--device-color) 18%,transparent)}.fl-device-head{display:flex;align-items:center;gap:9px;padding:12px 11px 8px}.fl-device-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:color-mix(in srgb,var(--device-color) 13%,transparent);color:var(--device-color);font-size:17px}.fl-device-title{min-width:0}.fl-device-title strong,.fl-device-title small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fl-device-title strong{font-size:11px}.fl-device-title small{font-size:9px;color:var(--fl-muted)}.fl-port-row{display:flex;flex-wrap:wrap;gap:4px;padding:5px 8px 9px;border-top:1px solid var(--fl-border)}.fl-port{position:relative;border:1px solid var(--fl-border);border-radius:5px;background:var(--fl-bg);color:var(--fl-muted);font-size:8px;padding:3px 4px;cursor:crosshair}.fl-port.is-used{background:color-mix(in srgb,var(--fl-accent) 16%,var(--fl-bg));color:var(--fl-primary)}.fl-port.is-pending{outline:2px solid var(--fl-accent)}.fl-empty{position:absolute;inset:0;display:grid;place-content:center;text-align:center;pointer-events:none;color:var(--fl-muted)}.fl-empty i{font-size:46px;color:var(--fl-primary)}.fl-empty h2{font-size:20px;color:var(--fl-text);margin:13px 0 4px}.fl-empty button{pointer-events:auto;justify-self:center;border:0;border-radius:9px;padding:9px 14px;background:var(--fl-primary);color:#fff}.fl-canvas-controls{position:absolute;bottom:18px;left:50%;z-index:15;transform:translateX(-50%);display:flex;align-items:center;padding:5px;border:1px solid var(--fl-border);border-radius:12px;background:var(--fl-panel);box-shadow:var(--fl-shadow);max-width:calc(100% - 32px);overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;-ms-overflow-style:none}.fl-canvas-controls::-webkit-scrollbar{display:none}.fl-canvas-controls button,.fl-live-map-tools button{white-space:nowrap}.fl-canvas-controls > *,.fl-live-map-tools > *,.fl-canvas-controls button,.fl-live-map-tools button,.fl-canvas-controls select,.fl-live-visualization select,.fl-live-map-tools select{flex:0 0 auto!important}.fl-canvas-controls button.active{background:var(--fl-primary);color:#fff}.fl-canvas-controls span{width:1px;height:23px;background:var(--fl-border)}.fl-canvas-controls output{min-width:48px;text-align:center;font-size:11px;color:var(--fl-muted)}.fl-mobile-tabs{display:none}.fl-inspector-empty{padding:55px 15px;text-align:center;color:var(--fl-muted)}.fl-inspector-empty i{font-size:34px}.fl-inspector-section{padding:0 0 16px;margin:0 0 16px;border-bottom:1px solid var(--fl-border)}.fl-inspector-section h3{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--fl-muted);margin-bottom:10px}.fl-field{display:grid;gap:4px;margin-bottom:10px}.fl-field label{font-size:10px;color:var(--fl-muted)}.fl-field input,.fl-field select{width:100%;border:1px solid var(--fl-border);border-radius:7px;background:var(--fl-bg);color:var(--fl-text);padding:7px 8px;font-size:12px}.fl-port-list,.fl-path-list{list-style:none;padding:0;margin:0;display:grid;gap:5px}.fl-port-list li,.fl-path-list li{display:flex;justify-content:space-between;gap:8px;padding:6px 7px;border-radius:6px;background:var(--fl-bg);font-size:10px}.fl-budget-card{border:1px solid var(--fl-border);border-radius:10px;overflow:hidden}.fl-budget-summary{padding:12px;background:linear-gradient(135deg,rgba(15,118,110,.12),rgba(34,197,94,.08))}.fl-budget-power{font-size:25px;font-weight:800}.fl-budget-status{display:inline-block;border-radius:20px;padding:3px 8px;background:var(--fl-primary);color:#fff;font-size:10px}.fl-budget-grid{display:grid;grid-template-columns:1fr auto;gap:6px;padding:10px;font-size:10px}.fl-statusbar{z-index:30;display:flex;align-items:center;gap:18px;padding:0 14px;background:var(--fl-panel);border-top:1px solid var(--fl-border);color:var(--fl-muted);font-size:10px}.fl-statusbar>span{display:flex;align-items:center;gap:5px}.fl-status-dot{font-size:6px;color:#22c55e}.fl-status-spacer{flex:1}.fl-dialog{width:min(470px,calc(100vw - 28px));border:1px solid var(--fl-border);border-radius:15px;background:var(--fl-panel);color:var(--fl-text);padding:0;box-shadow:0 25px 80px rgba(0,0,0,.28)}.fl-dialog::backdrop{background:rgba(15,23,42,.55);backdrop-filter:blur(3px)}.fl-dialog header,.fl-dialog footer{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--fl-border)}.fl-dialog header button{border:0;background:transparent;color:var(--fl-muted)}.fl-dialog fieldset{display:grid;gap:8px;margin:15px 18px;padding:12px;border:1px solid var(--fl-border);border-radius:9px}.fl-dialog legend{float:none;width:auto;margin:0 0 4px;font-size:11px;color:var(--fl-muted)}.fl-dialog footer{justify-content:flex-end;border:0;border-top:1px solid var(--fl-border)}.fl-dialog footer button{border:1px solid var(--fl-border);border-radius:8px;background:var(--fl-panel);color:var(--fl-text);padding:7px 12px}.fl-dialog footer .primary{background:var(--fl-primary);color:#fff}.fl-toast{position:fixed;right:18px;bottom:48px;z-index:80;max-width:360px;padding:11px 14px;border-radius:9px;background:#172033;color:#fff;box-shadow:var(--fl-shadow)}
@media(max-width:1100px){.fl-workspace{grid-template-columns:220px minmax(0,1fr) 270px}.fl-actions span:not(.fl-divider),.fl-project-name{display:none}.fl-brand{min-width:190px}.fl-toolbar{gap:8px}.fl-device-grid{grid-template-columns:1fr}.fl-map-mode-control>span{display:none}.fl-canvas-controls{gap:4px;padding:4px}.fl-canvas-controls button,.fl-live-map-tools button{padding:6px 8px;gap:4px}}
@media(max-width:780px){.fl-app{grid-template-rows:56px minmax(0,1fr) 28px}.fl-toolbar{padding:0 9px}.fl-brand{min-width:0}.fl-brand strong{font-size:12px}.fl-brand small,.fl-role,.fl-actions .fl-divider,.fl-actions [data-action=validate]{display:none}.fl-logo{width:34px;height:34px}.fl-workspace{display:block}.fl-palette,.fl-inspector{position:absolute;z-index:50;inset:56px auto 28px 0;width:min(300px,88vw);transform:translateX(-105%);transition:transform .2s}.fl-inspector{inset:56px 0 28px auto;transform:translateX(105%)}.fl-palette.is-open,.fl-inspector.is-open{transform:translateX(0)}.fl-mobile-close,.fl-mobile-tabs{display:flex}.fl-mobile-tabs{position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:16;border:1px solid var(--fl-border);border-radius:9px;background:var(--fl-panel)}.fl-canvas-shell{height:100%}.fl-statusbar{gap:10px;overflow:hidden}.fl-statusbar>span:nth-of-type(2),.fl-statusbar>span:last-child{display:none}.fl-device-grid{grid-template-columns:1fr 1fr}}
.fiber-lab-page,.fiber-lab-page .fl-app{max-width:100vw;overflow:hidden}.fl-toolbar,.fl-workspace,.fl-canvas-shell{min-width:0}.fl-workspace{position:relative;overflow:hidden}
@media(max-width:780px){.fl-toolbar{overflow:hidden}.fl-actions{min-width:0;flex-shrink:1}.fl-canvas-shell{width:100%;max-width:100vw}.fl-palette,.fl-inspector{visibility:hidden}.fl-palette.is-open,.fl-inspector.is-open{visibility:visible}}
@media(max-width:780px){.fl-palette{inset:0 auto 0 0}.fl-inspector{inset:0 0 0 auto}}
.fl-inspector-actions{display:flex;flex-wrap:wrap;gap:6px}.fl-inspector-actions button,.fl-csv-export button,.fl-core-bulk button{border:1px solid var(--fl-border);border-radius:7px;background:var(--fl-bg);color:var(--fl-text);padding:6px 8px;font-size:10px}.fl-inspector-actions button:hover,.fl-csv-export button:hover,.fl-core-bulk button:hover{border-color:var(--fl-primary);color:var(--fl-primary)}.fl-util-bar{height:7px;border-radius:8px;background:var(--fl-bg);overflow:hidden}.fl-util-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--fl-primary),#22c55e)}.fl-util-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.fl-util-grid div{padding:8px;border-radius:7px;background:var(--fl-bg);font-size:10px}.fl-util-grid b{display:block;font-size:15px}.fl-route-point{fill:#fff;stroke:var(--fl-primary);stroke-width:3;cursor:move;pointer-events:all}.fl-route-line{fill:none;stroke-linejoin:round;stroke-linecap:round}.fl-csv-export{margin:0 18px 16px;padding:12px;border:1px solid var(--fl-border);border-radius:9px}.fl-csv-export h3{font-size:11px;margin:0 0 8px;color:var(--fl-muted)}.fl-csv-export div{display:flex;flex-wrap:wrap;gap:6px}.fl-core-dialog{width:min(1040px,calc(100vw - 28px));max-height:88vh}.fl-core-dialog form{display:flex;flex-direction:column;max-height:86vh}.fl-core-toolbar,.fl-core-bulk{display:flex;align-items:end;gap:10px;padding:12px 18px;border-bottom:1px solid var(--fl-border)}.fl-core-toolbar label,.fl-core-bulk label{display:grid;gap:3px;flex:1;font-size:10px;color:var(--fl-muted)}.fl-core-toolbar select,.fl-core-toolbar input,.fl-core-bulk input{min-width:0;border:1px solid var(--fl-border);border-radius:7px;background:var(--fl-bg);color:var(--fl-text);padding:7px}.fl-core-bulk strong{align-self:center}.fl-util-cards{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;padding:12px 18px}.fl-util-card{padding:9px;border:1px solid var(--fl-border);border-radius:8px;background:var(--fl-bg);font-size:9px;text-transform:uppercase;color:var(--fl-muted)}.fl-util-card b{display:block;font-size:17px;color:var(--fl-text)}.fl-core-table-wrap{overflow:auto;margin:0 18px 12px;border:1px solid var(--fl-border);border-radius:9px}.fl-core-table{width:100%;border-collapse:collapse;font-size:10px}.fl-core-table th{position:sticky;top:0;background:var(--fl-bg);z-index:1;text-align:left;color:var(--fl-muted)}.fl-core-table th,.fl-core-table td{padding:7px;border-bottom:1px solid var(--fl-border);vertical-align:middle}.fl-core-dot{display:inline-block;width:10px;height:10px;border-radius:50%;border:1px solid rgba(0,0,0,.2);margin-right:5px}.fl-core-table select,.fl-core-table input{width:100%;min-width:70px;border:1px solid var(--fl-border);border-radius:5px;background:var(--fl-panel);color:var(--fl-text);padding:4px}.fl-core-actions{display:flex;gap:3px}.fl-core-actions button{border:0;border-radius:5px;background:var(--fl-bg);color:var(--fl-muted);padding:4px 5px}.fl-diagnostics-dialog{width:min(720px,calc(100vw - 28px))}.fl-diagnostic-list{display:grid;gap:8px;padding:16px 18px;max-height:65vh;overflow:auto}.fl-diagnostic{border:1px solid var(--fl-border);border-left:4px solid #f59e0b;border-radius:8px;padding:10px}.fl-diagnostic.is-error{border-left-color:#dc2626}.fl-diagnostic header{display:flex;padding:0;border:0;font-size:11px}.fl-diagnostic p{margin:5px 0 0;font-size:10px;color:var(--fl-muted)}.fl-diagnostic-empty{text-align:center;padding:50px;color:var(--fl-muted)}
@media(max-width:780px){.fl-util-cards{grid-template-columns:repeat(3,1fr)}.fl-core-toolbar,.fl-core-bulk{flex-wrap:wrap}.fl-core-toolbar label,.fl-core-bulk label{min-width:42%}.fl-core-dialog{max-width:calc(100vw - 12px)}.fl-actions [data-action=core-manager],.fl-actions [data-action=diagnostics]{display:none}}
.fl-devices{pointer-events:none}.fl-device{pointer-events:auto}
.fl-gpon-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:20px;background:var(--fl-bg);font-size:10px;font-weight:700}.fl-gpon-badge.is-online{background:rgba(34,197,94,.14);color:#15803d}.fl-gpon-badge.is-rejected,.fl-gpon-badge.is-los{background:rgba(220,38,38,.12);color:#dc2626}.fl-gpon-state-track{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0}.fl-gpon-state-track span{padding:3px 6px;border-radius:12px;background:var(--fl-bg);font-size:9px}.fl-service-result{margin-top:8px;padding:9px;border:1px solid var(--fl-border);border-radius:8px;background:var(--fl-bg);font-size:10px;white-space:pre-wrap}.fl-olt-dialog{width:min(1120px,calc(100vw - 24px));max-height:90vh}.fl-olt-dialog form{display:flex;flex-direction:column;max-height:88vh}.fl-olt-dialog form>header,.fl-olt-dialog .fl-olt-selector,.fl-olt-dialog .fl-manager-tabs,.fl-olt-dialog form>footer{flex:0 0 auto}.fl-olt-selector{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px}.fl-olt-selector label{display:grid;gap:3px;font-size:10px;color:var(--fl-muted)}.fl-olt-selector select{min-width:220px;border:1px solid var(--fl-border);border-radius:7px;background:var(--fl-bg);color:var(--fl-text);padding:7px}.fl-olt-selector>div{display:flex;gap:8px;flex-wrap:wrap}.fl-olt-selector>div span{padding:6px 9px;border-radius:7px;background:var(--fl-bg);font-size:10px}.fl-manager-tabs{display:flex;gap:3px;padding:0 18px;border-bottom:1px solid var(--fl-border);overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.fl-manager-tabs button{flex:0 0 auto;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--fl-muted);padding:9px 10px;font-size:11px;white-space:nowrap}.fl-manager-tabs button.active{border-color:var(--fl-primary);color:var(--fl-primary);font-weight:700}.fl-manager-content{min-height:300px;overflow:auto;padding:14px 18px}.fl-olt-dialog .fl-manager-content{min-height:0;flex:1 1 auto;overflow:auto}.fl-manager-table{width:100%;border-collapse:collapse;font-size:10px}.fl-manager-table th,.fl-manager-table td{padding:8px;border-bottom:1px solid var(--fl-border);text-align:left;vertical-align:middle}.fl-manager-table th{color:var(--fl-muted);background:var(--fl-bg)}.fl-manager-table select,.fl-manager-table input{max-width:135px;border:1px solid var(--fl-border);border-radius:5px;background:var(--fl-panel);color:var(--fl-text);padding:4px}.fl-manager-actions{display:flex;gap:4px;flex-wrap:wrap}.fl-manager-actions button{border:1px solid var(--fl-border);border-radius:5px;background:var(--fl-bg);color:var(--fl-text);padding:4px 6px;font-size:9px}.fl-profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fl-profile-card{padding:10px;border:1px solid var(--fl-border);border-radius:8px;background:var(--fl-bg);font-size:10px}.fl-profile-card b{display:block;font-size:12px}.fl-alarm{display:grid;grid-template-columns:auto 1fr auto;gap:8px;padding:9px;border-bottom:1px solid var(--fl-border);font-size:10px}.fl-alarm i{color:#f59e0b}.fl-cli-dialog{width:min(820px,calc(100vw - 20px))}.fl-cli-output{height:410px;overflow:auto;margin:0;padding:16px;background:#07111f;color:#b8f7d4;font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap}.fl-cli-input{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#0b1728;color:#5eead4;font:12px ui-monospace,monospace}.fl-cli-input input{flex:1;border:0;outline:0;background:transparent;color:#e2e8f0;font:inherit}.fl-cli-input button{border:1px solid #1e766e;border-radius:5px;background:#0f766e;color:#fff;padding:5px 10px}.fl-ont-online .fl-device-icon::after{content:'';position:absolute;width:8px;height:8px;border-radius:50%;background:#22c55e;transform:translate(11px,-11px);box-shadow:0 0 0 2px var(--fl-panel)}
@media(max-width:780px){.fl-actions [data-action=olt-manager],.fl-actions [data-action=gpon-cli]{display:none}.fl-profile-grid{grid-template-columns:1fr}.fl-olt-selector{align-items:flex-start;flex-direction:column}.fl-olt-selector select{min-width:0;width:100%}.fl-manager-content{padding:10px}.fl-cli-output{height:55vh}}.fl-manager-content-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.fl-manager-content-toolbar button{flex:0 0 auto;border:1px solid var(--fl-border);border-radius:7px;background:var(--fl-bg);color:var(--fl-text);padding:6px 9px;font-size:10px}
.fl-link.is-vfl .fl-link-line{stroke:#ef4444!important;filter:drop-shadow(0 0 5px #ef4444);animation:fl-vfl-pulse 1s infinite alternate}.fl-fault-marker{pointer-events:all}.fl-fault-marker circle{fill:#dc2626;stroke:#fff;stroke-width:2}.fl-fault-marker path{stroke:#fff;stroke-width:2}.fl-measurement-dialog{width:min(1200px,calc(100vw - 24px));max-height:94vh}.fl-measurement-dialog form{display:flex;flex-direction:column;max-height:92vh}.fl-measurement-context{display:flex;align-items:end;gap:12px;padding:11px 18px;background:var(--fl-bg);border-bottom:1px solid var(--fl-border)}.fl-measurement-context label,.fl-otdr-toolbar label,.fl-settings-grid label{display:grid;gap:4px;font-size:10px;color:var(--fl-muted)}.fl-measurement-context select,.fl-otdr-toolbar input,.fl-otdr-toolbar select,.fl-settings-grid input,.fl-settings-grid select{border:1px solid var(--fl-border);border-radius:7px;background:var(--fl-panel);color:var(--fl-text);padding:7px}.fl-measurement-context span{margin-left:auto;padding:7px 10px;border-radius:8px;background:rgba(37,99,235,.1);color:#2563eb;font-size:10px}.fl-measurement-content{min-height:420px;padding:16px 18px;overflow:auto}.fl-measure-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.fl-instrument,.fl-fault-builder,.fl-troubleshooting{border:1px solid var(--fl-border);border-radius:13px;background:var(--fl-panel);padding:15px;box-shadow:0 7px 22px rgba(15,23,42,.05)}.fl-instrument>header{display:flex;justify-content:flex-start;gap:10px;padding:0 0 13px;margin-bottom:13px}.fl-instrument>header>i{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:rgba(37,99,235,.1);color:#2563eb;font-size:19px}.fl-instrument header div{display:grid}.fl-instrument header small{color:var(--fl-muted)}.fl-instrument-led{margin-left:auto;width:10px;height:10px;border-radius:50%;background:#94a3b8}.fl-instrument-led.is-on{background:#22c55e;box-shadow:0 0 9px #22c55e}.fl-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:13px}.fl-settings-grid .fl-check{display:flex;align-items:center;gap:7px}.fl-instrument>button,.fl-instrument-actions button,.fl-fault-builder>button,.fl-troubleshooting>button,.fl-otdr-toolbar>button{border:0;border-radius:8px;background:#2563eb;color:#fff;padding:8px 12px}.fl-instrument-actions{display:flex;gap:8px}.fl-meter-result{margin-top:16px;border-radius:12px;padding:15px;background:#08111f;color:#d1fae5}.fl-meter-result>strong{font:700 31px ui-monospace,monospace}.fl-meter-result>span{float:right;border-radius:20px;background:#15803d;padding:4px 9px;font-weight:700;font-size:10px}.fl-meter-result.is-fail>span{background:#dc2626}.fl-meter-result dl,.fl-fault-location dl{display:grid;grid-template-columns:1fr auto;gap:5px;margin:12px 0 0;font-size:10px}.fl-meter-result dd,.fl-fault-location dd{margin:0;font-weight:700}.fl-instrument-empty{display:grid;place-items:center;min-height:110px;border:1px dashed var(--fl-border);border-radius:9px;color:var(--fl-muted)}.fl-vfl-panel{max-width:720px;margin:auto}.fl-vfl-light{margin-left:auto;width:13px;height:13px;border-radius:50%;background:#ef4444;box-shadow:0 0 14px 5px rgba(239,68,68,.35)}.fl-result-banner{display:grid;margin-top:14px;padding:11px;border-radius:9px;background:rgba(34,197,94,.11);color:#15803d}.fl-result-banner.is-fail{background:rgba(220,38,38,.1);color:#dc2626}.fl-result-banner span{font-size:10px}.fl-fault-list{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:13px}.fl-fault-card{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;padding:10px;border:1px solid var(--fl-border);border-radius:9px}.fl-fault-card>i{color:#dc2626;font-size:19px}.fl-fault-card div{display:grid}.fl-fault-card span,.fl-fault-card small{font-size:10px;color:var(--fl-muted)}.fl-fault-card.is-hidden{border-style:dashed}.fl-fault-card button{border:0;background:transparent;color:#dc2626}.fl-otdr-toolbar{display:grid;grid-template-columns:repeat(4,minmax(100px,1fr));align-items:end;gap:8px;margin-bottom:12px}.fl-otdr-trace{border:1px solid var(--fl-border);border-radius:10px;overflow:auto;background:#f8fafc}.fl-otdr-trace svg{display:block;width:100%;height:auto;min-width:700px}.fl-otdr-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:12px;margin-top:12px}.fl-otdr-layout .fl-core-table-wrap{margin:0;max-height:260px}.fl-otdr-layout tbody tr{cursor:pointer}.fl-otdr-layout tbody tr:hover{background:var(--fl-bg)}.fl-event-status{padding:3px 6px;border-radius:12px;background:rgba(34,197,94,.12);color:#15803d;font-size:9px}.fl-event-status.is-fail{background:rgba(220,38,38,.1);color:#dc2626}.fl-event-status.is-dead_zone{background:rgba(245,158,11,.13);color:#b45309}.fl-fault-location{border:1px solid rgba(220,38,38,.3);border-radius:10px;padding:12px;background:rgba(220,38,38,.05)}.fl-fault-location>span{font-size:9px;letter-spacing:.12em;color:#dc2626}.fl-fault-location>strong{display:block;font-size:24px}.fl-fault-location p{font-size:10px;color:var(--fl-muted)}.fl-fault-location.is-clear{border-color:var(--fl-border);background:var(--fl-bg)}.fl-measurement-reports{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:10px 18px;border-top:1px solid var(--fl-border)}.fl-measurement-reports b{margin-right:5px;font-size:10px}.fl-measurement-reports button{border:1px solid var(--fl-border);border-radius:6px;background:var(--fl-bg);color:var(--fl-text);padding:5px 8px;font-size:9px}
@keyframes fl-vfl-pulse{to{stroke-width:7}}
@media(max-width:780px){.fl-actions [data-action=measurement]{display:none}.fl-measurement-dialog{max-width:calc(100vw - 8px)}.fl-measurement-context{align-items:stretch;flex-direction:column}.fl-measurement-context span{margin:0}.fl-measurement-content{padding:10px;min-height:55vh}.fl-measure-grid,.fl-otdr-layout{grid-template-columns:1fr}.fl-settings-grid,.fl-fault-list{grid-template-columns:1fr}.fl-otdr-toolbar{grid-template-columns:repeat(2,1fr)}.fl-fault-location{order:-1}}
.fl-measurement-dialog header,.fl-measurement-dialog footer,.fl-measurement-context,.fl-measurement-dialog .fl-manager-tabs,.fl-measurement-reports{flex-shrink:0}.fl-measurement-content{min-height:0;flex:1 1 auto}
.fl-map-background{position:absolute;z-index:0;left:0;top:0;width:4000px;height:2600px;transform-origin:0 0;background-position:center;background-repeat:repeat;transition:opacity .15s}.fl-map-background.is-fixed{inset:0;width:100%;height:100%;transform-origin:center}.fl-map-background[data-map-type=grid]{background-image:linear-gradient(rgba(100,116,139,.22) 1px,transparent 1px),linear-gradient(90deg,rgba(100,116,139,.22) 1px,transparent 1px);background-size:24px 24px!important}.fl-map-background[data-map-type=residential-area]{background-color:#ecfdf5;background-image:linear-gradient(30deg,transparent 75%,rgba(34,197,94,.16) 75%),linear-gradient(150deg,transparent 75%,rgba(59,130,246,.13) 75%),linear-gradient(90deg,rgba(148,163,184,.25) 12%,transparent 12%,transparent 88%,rgba(148,163,184,.25) 88%)}.fl-map-background[data-map-type=campus]{background-color:#f0fdf4;background-image:radial-gradient(circle at 25% 30%,rgba(34,197,94,.28) 0 18%,transparent 19%),linear-gradient(90deg,transparent 45%,rgba(148,163,184,.25) 46% 54%,transparent 55%)}.fl-map-background[data-map-type=city-block]{background-color:#f8fafc;background-image:linear-gradient(90deg,transparent 42%,rgba(100,116,139,.28) 43% 57%,transparent 58%),linear-gradient(transparent 42%,rgba(100,116,139,.28) 43% 57%,transparent 58%)}.fl-map-background[data-map-type=building]{background-color:#f1f5f9;background-image:linear-gradient(90deg,rgba(148,163,184,.2) 2px,transparent 2px),linear-gradient(rgba(148,163,184,.2) 2px,transparent 2px)}.fl-world{z-index:1}.fl-planning-dialog{width:min(1180px,calc(100vw - 24px));max-height:92vh}.fl-planning-dialog form{display:flex;flex-direction:column;max-height:90vh}.fl-planning-dialog header,.fl-planning-dialog footer,.fl-planning-dialog .fl-manager-tabs,.fl-planning-reports{flex-shrink:0}.fl-planning-content{min-height:0;flex:1 1 auto;overflow:auto;padding:16px 18px}.fl-planning-map-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:14px}.fl-planning-card{padding:15px;border:1px solid var(--fl-border);border-radius:12px;background:var(--fl-panel)}.fl-planning-card h3,.fl-capacity-layout h3{font-size:12px;margin:0 0 12px}.fl-planning-card>p,.fl-planning-card>small{color:var(--fl-muted);font-size:10px}.fl-planning-card>button,.fl-planning-actions button,.fl-unit-costs>button{border:0;border-radius:8px;background:var(--fl-primary);color:#fff;padding:8px 11px;font-size:10px}.fl-planning-actions{display:flex;gap:7px;margin-bottom:9px}.fl-map-calibration{display:grid;margin-top:16px;padding:13px;border-radius:9px;background:var(--fl-bg)}.fl-map-calibration span{font-size:9px;color:var(--fl-muted)}.fl-map-calibration strong{font-size:18px}.fl-planning-summary{display:flex;gap:8px;margin-bottom:12px}.fl-planning-summary span{padding:9px 12px;border:1px solid var(--fl-border);border-radius:9px;background:var(--fl-bg);font-size:10px}.fl-planning-summary b{font-size:16px;margin-right:4px}.fl-planning-content>.fl-core-table-wrap{margin:0}.fl-planning-content .fl-manager-table button{border:1px solid var(--fl-border);border-radius:6px;background:var(--fl-primary);color:#fff;padding:5px 8px}.fl-planning-content .fl-manager-table input,.fl-planning-content .fl-manager-table select{max-width:150px}.fl-capacity-cards{display:grid;grid-template-columns:repeat(6,1fr);gap:9px;margin-bottom:16px}.fl-capacity-cards article{display:grid;padding:11px;border:1px solid var(--fl-border);border-radius:9px;background:var(--fl-bg)}.fl-capacity-cards span{font-size:9px;color:var(--fl-muted)}.fl-capacity-cards b{font-size:19px}.fl-capacity-layout{display:grid;gap:16px}.fl-capacity-layout .fl-core-table-wrap{margin:0}.fl-estimated-banner{display:grid;margin-bottom:13px;padding:15px;border-radius:12px;background:linear-gradient(135deg,#0f766e,#0369a1);color:#fff}.fl-estimated-banner>span{font-size:9px;letter-spacing:.14em}.fl-estimated-banner>b{font-size:27px}.fl-estimated-banner>small{opacity:.8}.fl-unit-costs{margin-bottom:14px;border:1px solid var(--fl-border);border-radius:9px;padding:10px}.fl-unit-costs summary{cursor:pointer;font-weight:700;font-size:11px}.fl-unit-cost-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}.fl-unit-cost-grid label{display:grid;gap:3px;font-size:9px;color:var(--fl-muted)}.fl-unit-cost-grid input{min-width:0;border:1px solid var(--fl-border);border-radius:6px;background:var(--fl-bg);color:var(--fl-text);padding:6px}.fl-planning-warnings{display:grid;grid-template-columns:1fr 1fr;gap:9px}.fl-planning-warnings article{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:start;padding:11px;border:1px solid #f59e0b;border-radius:9px}.fl-planning-warnings article.is-error{border-color:#dc2626}.fl-planning-warnings i{color:#f59e0b}.fl-planning-warnings .is-error i{color:#dc2626}.fl-planning-warnings div{display:grid}.fl-planning-warnings span,.fl-planning-warnings small{font-size:10px;color:var(--fl-muted)}.fl-planning-warnings button{border:1px solid var(--fl-border);border-radius:6px;background:var(--fl-bg);color:var(--fl-text);font-size:9px;padding:5px 7px}.fl-planning-reports{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:9px 18px;border-top:1px solid var(--fl-border)}.fl-planning-reports b{font-size:10px;margin-right:5px}.fl-planning-reports button{border:1px solid var(--fl-border);border-radius:6px;background:var(--fl-bg);color:var(--fl-text);padding:5px 8px;font-size:9px}
@media(max-width:780px){.fl-actions [data-action=planning]{display:none}.fl-planning-dialog{max-width:calc(100vw - 8px)}.fl-planning-content{padding:10px}.fl-planning-map-grid,.fl-planning-warnings{grid-template-columns:1fr}.fl-capacity-cards{grid-template-columns:repeat(2,1fr)}.fl-unit-cost-grid{grid-template-columns:repeat(2,1fr)}.fl-planning-summary{overflow:auto}.fl-planning-reports{max-height:90px;overflow:auto}}
.fl-toolbar{min-width:0;overflow:hidden}.fl-brand,.fl-account{flex:0 0 auto}.fl-project-name{min-width:0}.fl-actions{flex:1 1 auto;min-width:0;margin-left:0;overflow-x:auto;overflow-y:hidden;white-space:nowrap;overscroll-behavior-inline:contain;scrollbar-width:thin;scrollbar-color:var(--fl-border) transparent}.fl-actions>*{flex:0 0 auto}.fl-actions::-webkit-scrollbar{height:4px}.fl-actions::-webkit-scrollbar-thumb{border-radius:4px;background:var(--fl-border)}
.fl-experiment-dialog{width:min(900px,calc(100vw - 24px));max-height:92vh}.fl-experiment-dialog form{display:flex;flex-direction:column;max-height:90vh}.fl-experiment-content{min-height:0;overflow:auto;padding:18px}.fl-experiment-intro{display:grid;grid-template-columns:auto minmax(0,1fr);gap:18px;padding:20px;border:1px solid var(--fl-border);border-radius:14px;background:linear-gradient(135deg,color-mix(in srgb,var(--fl-primary) 12%,var(--fl-panel)),var(--fl-panel))}.fl-experiment-intro>i{display:grid;place-items:center;width:58px;height:58px;border-radius:16px;background:var(--fl-primary);color:#fff;font-size:27px}.fl-experiment-intro h3{margin:0 0 6px;font-size:18px}.fl-experiment-intro p,.fl-experiment-intro li{color:var(--fl-muted);font-size:11px}.fl-experiment-intro button,.fl-experiment-steps button{border:0;border-radius:8px;background:var(--fl-primary);color:#fff;padding:8px 11px;font-size:10px}.fl-experiment-progress{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end;padding:14px;border-radius:12px;background:var(--fl-bg)}.fl-experiment-progress div:first-child{display:grid}.fl-experiment-progress span{font-size:9px;color:var(--fl-muted);letter-spacing:.1em}.fl-experiment-progress strong{font-size:22px}.fl-experiment-progressbar{grid-column:1/-1;height:8px;border-radius:10px;background:var(--fl-panel);overflow:hidden}.fl-experiment-progressbar span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--fl-primary),#22c55e)}.fl-experiment-complete{display:flex;gap:10px;align-items:center;margin-top:10px;padding:12px;border:1px solid rgba(34,197,94,.35);border-radius:10px;background:rgba(34,197,94,.1);color:#15803d}.fl-experiment-complete i{font-size:24px}.fl-experiment-complete div{display:grid}.fl-experiment-steps{list-style:none;display:grid;gap:8px;margin:14px 0;padding:0}.fl-experiment-steps li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:center;padding:11px;border:1px solid var(--fl-border);border-radius:10px}.fl-experiment-steps li.is-complete{border-color:rgba(34,197,94,.38);background:rgba(34,197,94,.06)}.fl-experiment-step-number{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--fl-bg);color:var(--fl-muted);font-size:11px;font-weight:800}.is-complete .fl-experiment-step-number{background:#22c55e;color:#fff}.fl-experiment-steps p{margin:2px 0 0;color:var(--fl-muted);font-size:10px}.fl-experiment-steps small{display:block;margin-top:4px;color:var(--fl-primary);font-size:9px}.fl-experiment-steps button:disabled{opacity:.45;cursor:not-allowed}.fl-experiment-meta{display:flex;flex-wrap:wrap;gap:8px}.fl-experiment-meta span{padding:6px 8px;border-radius:7px;background:var(--fl-bg);font-size:9px}.fl-experiment-meta b{font-family:ui-monospace,monospace}@media(max-width:780px){.fl-actions [data-action=experiment]{display:none}.fl-experiment-dialog{max-width:calc(100vw - 8px)}.fl-experiment-content{padding:10px}.fl-experiment-intro{grid-template-columns:1fr}.fl-experiment-steps li{grid-template-columns:auto minmax(0,1fr)}.fl-experiment-steps button{grid-column:2}}
.fl-account [hidden],.fl-auth-dialog [hidden],.fl-guest-limit-banner[hidden]{display:none!important}.fl-auth-actions,.fl-account-user{display:flex;align-items:center;gap:3px}.fl-auth-actions button.primary,.fl-auth-panel button.primary{background:var(--fl-primary);color:#fff}.fl-account-user{max-width:190px;padding-left:8px;border-left:1px solid var(--fl-border);color:var(--fl-muted)}.fl-account-user>span{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:650}.fl-palette-item{position:relative}.fl-palette-item.is-limit-reached{opacity:.58;cursor:not-allowed}.fl-palette-item .nl-device-limit-badge{position:absolute;top:5px;right:5px;padding:1px 5px;border-radius:10px;background:var(--fl-bg);color:var(--fl-muted);font-size:8px;font-weight:750}.fl-guest-limit-banner{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px;margin:0 0 10px;padding:9px;border:1px solid #f59e0b;border-radius:8px;background:rgba(245,158,11,.1);color:var(--fl-text);font-size:9px}.fl-guest-limit-banner>button{grid-column:2;justify-self:start;border:0;border-radius:6px;background:var(--fl-primary);color:#fff;padding:4px 8px}.fl-auth-dialog{width:min(430px,calc(100vw - 28px))}.fl-auth-panel{padding:18px}.fl-auth-panel h3{margin:0 0 14px;font-size:17px}.fl-auth-panel form{display:grid;gap:12px}.fl-auth-panel label{display:grid;gap:5px;color:var(--fl-muted);font-size:11px}.fl-auth-panel input{width:100%;border:1px solid var(--fl-border);border-radius:8px;background:var(--fl-bg);color:var(--fl-text);padding:9px 10px}.fl-auth-panel form button{border:0;border-radius:8px;padding:9px 12px}.fl-auth-panel>p{margin:14px 0 0;color:var(--fl-muted);font-size:11px}.fl-auth-panel>p button{border:0;background:transparent;color:var(--fl-primary);font-weight:700}.fl-auth-status{min-height:20px;margin:0;padding:0 18px 14px;color:#dc2626;font-size:11px}@media(max-width:780px){.fl-auth-actions button span,.fl-account-user>span{display:none}.fl-account-user{padding-left:0;border-left:0}.fl-account{gap:2px}}
.fl-account-user{max-width:250px}.fl-cloud-save-content{padding:18px}.fl-cloud-save-content label{display:grid;gap:6px;color:var(--fl-muted);font-size:11px}.fl-cloud-save-content input{width:100%;border:1px solid var(--fl-border);border-radius:8px;background:var(--fl-bg);color:var(--fl-text);padding:9px 10px}.fl-cloud-save-content p,.fl-cloud-dialog-status{min-height:18px;margin:8px 0 0;color:#dc2626;font-size:11px}.fl-cloud-dialog-status{padding:0 18px}.fl-cloud-projects-dialog{width:min(620px,calc(100vw - 28px))}.fl-cloud-project-list{display:grid;gap:8px;max-height:min(55vh,520px);overflow:auto;padding:14px 18px}.fl-cloud-project-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px;border:1px solid var(--fl-border);border-radius:10px;background:var(--fl-bg)}.fl-cloud-project-row>div:first-child{display:grid;min-width:0}.fl-cloud-project-row strong,.fl-cloud-project-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fl-cloud-project-row small{color:var(--fl-muted);font-size:9px}.fl-cloud-project-row>div:last-child{display:flex;gap:5px}.fl-cloud-project-row button{border:1px solid var(--fl-border);border-radius:7px;background:var(--fl-panel);color:var(--fl-text);padding:5px 8px;font-size:10px}.fl-cloud-project-row button:first-child{border-color:var(--fl-primary);background:var(--fl-primary);color:#fff}.fl-cloud-message{margin:0;padding:18px;text-align:center;color:var(--fl-muted)}.fl-cloud-message.is-error{color:#dc2626}@media(max-width:780px){.fl-cloud-project-row{grid-template-columns:1fr}.fl-cloud-project-row>div:last-child{flex-wrap:wrap}}

/* Compact toolbar navigation: dropdowns only launch existing Fiber actions. */
.fl-toolbar{gap:12px;overflow:visible}.fl-project-name{flex:1 1 150px;min-width:100px}.fl-actions{flex:0 0 auto;min-width:0;margin-left:auto;overflow:visible;white-space:normal}.fl-account{min-width:0}.fl-toolbar-menu{position:relative;flex:0 0 auto}.fl-toolbar-menu>summary{list-style:none;cursor:pointer;user-select:none}.fl-toolbar-menu>summary::-webkit-details-marker{display:none}.fl-toolbar-menu>summary,.fl-toolbar-menu-panel button{border:0;background:transparent;color:var(--fl-muted);border-radius:8px;padding:8px 10px;display:flex;align-items:center;gap:6px}.fl-toolbar-menu>summary:hover,.fl-toolbar-menu>summary:focus-visible,.fl-toolbar-menu[open]>summary{outline:0;background:var(--fl-bg);color:var(--fl-primary)}.fl-menu-chevron{font-size:9px;transition:transform .15s}.fl-toolbar-menu[open] .fl-menu-chevron{transform:rotate(180deg)}.fl-toolbar-menu-panel{position:absolute;z-index:90;top:calc(100% + 7px);left:0;display:grid;min-width:210px;padding:6px;border:1px solid var(--fl-border);border-radius:11px;background:var(--fl-panel);box-shadow:0 16px 40px rgba(15,23,42,.18)}.fl-toolbar-menu:not([open])>.fl-toolbar-menu-panel{display:none}.fl-toolbar-menu-panel button{width:100%;justify-content:flex-start;text-align:left;white-space:nowrap}.fl-toolbar-menu-panel button:hover,.fl-toolbar-menu-panel button:focus-visible{outline:0;background:var(--fl-bg);color:var(--fl-primary)}.fl-toolbar-menu-panel hr{width:100%;margin:5px 0;border:0;border-top:1px solid var(--fl-border);opacity:1}.fl-tools-menu{min-width:220px}.fl-account-menu>summary span{display:block;max-width:115px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:650}.fl-account-menu>.fl-toolbar-menu-panel{right:0;left:auto;min-width:165px}.fl-actions>button:disabled{opacity:.38;cursor:not-allowed}.fl-actions>button:disabled:hover{background:transparent;color:var(--fl-muted)}.fl-app[data-auth-role=guest] .fl-role{display:none}
@media(max-width:1100px){.fl-project-name{display:none}.fl-toolbar{gap:8px}.fl-brand{min-width:190px}.fl-actions span:not(.fl-divider),.fl-toolbar-menu span{display:inline}.fl-account-menu>summary span{display:block}}
@media(max-width:780px){.fl-toolbar{overflow:visible}.fl-brand small{display:none}.fl-brand{min-width:0}.fl-actions [data-action=validate]{display:flex}.fl-actions [data-action=validate] span,.fl-toolbar-menu>summary>span{display:none}.fl-toolbar-menu-panel span{display:inline}.fl-toolbar-menu-panel [data-action]{display:flex!important}.fl-role{display:none}.fl-account-menu>summary span{display:none}.fl-toolbar-menu>summary,.fl-actions>button,.fl-account>button{padding:8px}.fl-toolbar-menu-panel{position:fixed;top:58px;right:8px;left:8px;min-width:0}}

/* A Planning background owns the full canvas background; the base grid is fallback-only. */
.fl-canvas.has-planning-background{background-image:none}

/* Fiber Live Map swaps only the canvas surface; schematic layout remains unchanged. */
.fl-live-map{position:absolute;inset:0;z-index:4;background:#dbe4ea}.fl-live-map[hidden]{display:none}
.fl-app[data-map-mode=live] .fl-world,.fl-app[data-map-mode=live] .fl-map-background,.fl-app[data-map-mode=live] .fl-empty{display:none!important}.fl-app[data-map-mode=live] .fl-canvas{background:#dbe4ea}
.fl-live-map-status{position:absolute;z-index:800;left:14px;top:14px;display:flex;align-items:center;gap:8px;max-width:min(420px,calc(100% - 28px));padding:8px 10px;border:1px solid #cbd5e1;border-radius:8px;background:rgba(255,255,255,.94);box-shadow:0 4px 14px rgba(15,23,42,.12);font-size:11px;color:#334155}.fl-live-map-status[hidden]{display:none}.fl-live-map-status[data-map-state=OFFLINE]{border-color:#fca5a5;color:#991b1b}.fl-live-map-status[data-map-state=DEGRADED]{border-color:#fcd34d;color:#92400e}.fl-live-map-status button{border:1px solid currentColor;border-radius:6px;background:transparent;color:inherit;padding:3px 7px}
.fl-map-mode-control,.fl-live-visualization{display:flex;align-items:center;gap:5px;font-size:9px;color:var(--fl-muted)}
.fl-map-mode-control select,.fl-live-visualization select{height:30px;border:1px solid var(--fl-border);border-radius:6px;background:var(--fl-panel);color:var(--fl-text);padding:0 7px;font-size:10px}

/* ----- Fiber Live‑Map second toolbar fixes ----- */
.fl-live-map-tools{
  display:flex;
  align-items:center;
  gap:4px;
  flex-wrap:nowrap;
  min-width:max-content;
}
.fl-live-map-tools[hidden]{display:none!important}

/* The generic separator rule above also matches button-label spans. Restore
   label sizing here and keep only the toolbar's direct child as a divider. */
.fl-canvas-controls > span{flex:0 0 1px}

.fl-live-button-label,
.fl-live-button-label em,
.fl-live-button-label b{
  display:inline;
  width:auto;
  min-width:max-content;
  height:auto;
  margin:0;
  overflow:visible;
  background:transparent;
  font:inherit;
  font-style:normal;
  white-space:nowrap;
}
.fl-live-button-label b{font-weight:750}
.fl-live-button-label [data-label-compact]{display:none}

.fl-live-map-tools button.is-active{background:var(--fl-primary);border-color:var(--fl-primary);color:#fff}
.fl-live-map-tools button[data-action=map-finish-route],
.fl-live-map-tools button[data-action=map-cancel-route],
.fl-live-map-tools button[data-action=map-delete-point]{display:none}
.fl-app[data-route-editing=true] .fl-live-map-tools button[data-action=map-finish-route],
.fl-app[data-route-editing=true] .fl-live-map-tools button[data-action=map-cancel-route],
.fl-app[data-route-editing=true] .fl-live-map-tools button[data-action=map-delete-point]{display:inline-flex}

/* Button shrink & gap reduction */
.fl-live-map-tools button{
  flex:0 0 auto;
  min-width:36px;
  padding:6px 8px;
  gap:4px;
  white-space:nowrap;
}

/* Live Map toolbar: size and anchor against the canvas shell, whose width
   already excludes the Device Palette and Properties Inspector. */
.fl-canvas-shell{container:fl-canvas-shell / inline-size}
.fl-app[data-map-mode=live] .fl-canvas-controls{
  bottom:14px;
  width:max-content;
  max-width:calc(100% - 16px);
  gap:3px;
  overflow-x:auto;
  overflow-y:hidden;
  overscroll-behavior-inline:contain;
  flex:0 0 auto;
  flex-shrink:0;
}
.fl-app[data-map-mode=live] .fl-map-mode-control,
.fl-app[data-map-mode=live] .fl-live-map-tools,
.fl-app[data-map-mode=live] .fl-live-map-tools button[data-action=map-move],
.fl-app[data-map-mode=live] .fl-live-map-tools button[data-action=map-edit-route],
.fl-app[data-map-mode=live] .fl-live-visualization{
  flex:0 0 auto!important;
  min-width:max-content;
  max-width:none;
  overflow:visible;
  position:static;
}
.fl-app[data-map-mode=live] .fl-canvas-controls button,
.fl-app[data-map-mode=live] .fl-canvas-controls select,
.fl-app[data-map-mode=live] .fl-canvas-controls output,
.fl-app[data-map-mode=live] .fl-live-button-label{
  white-space:nowrap;
}
.fl-app[data-map-mode=live] .fl-live-visualization select{
  width:92px;
  max-width:92px;
  text-overflow:ellipsis;
}

@container fl-canvas-shell (max-width:760px){
  .fl-app[data-map-mode=live] [data-action=map-move] [data-label-full]{display:none}
  .fl-app[data-map-mode=live] [data-action=map-move] [data-label-compact]{display:inline}
}

@container fl-canvas-shell (max-width:620px){
  .fl-app[data-map-mode=live] .fl-canvas-controls{gap:2px;padding:4px}
  .fl-app[data-map-mode=live] .fl-live-map-tools{gap:2px}
  .fl-app[data-map-mode=live] .fl-canvas-controls button,
  .fl-app[data-map-mode=live] .fl-live-map-tools button{min-width:30px;padding:6px;gap:3px}
  .fl-app[data-map-mode=live] .fl-map-mode-control select{width:72px;padding-inline:5px}
  .fl-app[data-map-mode=live] .fl-live-visualization select{width:82px;max-width:82px;padding-inline:5px}
  .fl-app[data-map-mode=live] [data-action=map-edit-route] [data-label-full]{display:none}
  .fl-app[data-map-mode=live] [data-action=map-edit-route] [data-label-compact]{display:inline}
  .fl-app[data-map-mode=live][data-route-editing=true] .fl-map-mode-control{display:none}
}

.fl-live-marker-host,.fl-live-route-point-host{background:transparent;border:0}.fl-live-marker{position:relative;display:flex;width:var(--live-hit-width);height:calc(var(--live-hit-height) + 17px);flex-direction:column;align-items:center;gap:2px;transform-origin:center;color:var(--device-color,#172033)}.fl-live-symbol-hit{position:relative;display:grid;width:var(--live-hit-width);height:var(--live-hit-height);flex:0 0 var(--live-hit-height);place-items:center;border-radius:8px}.fl-live-device-symbol{position:static;inset:auto;display:block;overflow:visible;pointer-events:none}.fl-live-device-symbol *{pointer-events:none}.fl-live-marker>b{position:relative;z-index:2;max-width:92px;padding:2px 5px;border-radius:4px;background:rgba(255,255,255,.94);color:#172033;box-shadow:0 1px 4px rgba(15,23,42,.2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px;line-height:1.25;pointer-events:none}.fl-live-marker.is-selected .fl-live-symbol-hit::before{content:"";position:absolute;z-index:-1;inset:-4px;border:2px solid color-mix(in srgb,var(--device-color) 72%,#fff);border-radius:9px;background:color-mix(in srgb,var(--device-color) 7%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--device-color) 14%,transparent);pointer-events:none}
.fl-live-cable-label{border:0!important;border-radius:5px!important;background:rgba(15,23,42,.88)!important;color:#fff!important;box-shadow:none!important;font-size:9px!important;padding:3px 5px!important}.fl-live-cable-label:before{display:none!important}.fl-live-route-point{display:grid;place-items:center;width:20px;height:20px;padding:0;border:2px solid #fff;border-radius:50%;background:#2563eb;color:#fff;box-shadow:0 2px 7px rgba(15,23,42,.35);font-size:8px;font-weight:700}.fl-live-route-point.is-selected{background:#dc2626;outline:2px solid #fca5a5}
.fl-geo-readout{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:7px;border:1px solid var(--fl-border);border-radius:6px;background:var(--fl-bg);font-size:9px}.fl-geo-readout div{padding:7px;border:1px solid var(--fl-border);border-radius:6px;background:var(--fl-bg);font-size:9px}.fl-geo-readout b{font-size:10px;color:var(--fl-text)}.fl-geo-readout small{grid-column:1/-1;color:var(--fl-muted)}
.fl-inspector-port{border:1px solid var(--fl-primary);border-radius:5px;background:transparent;color:var(--fl-primary);font-size:9px;padding:2px 5px;cursor:crosshair}.fl-inspector-port:hover,.fl-inspector-port:focus-visible{background:var(--fl-primary);color:#fff;outline:0}
.fl-app[data-map-mode=live] [data-action=pan-mode],.fl-app[data-map-mode=live] [data-action=route-mode],.fl-app[data-map-mode=live] [data-action=select-mode],.fl-app[data-map-mode=live] [data-zoom]{display:none}.leaflet-container{font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif}
@media(max-width:780px){.fl-map-mode-control>span{display:none}}

/* Canonical Fiber device visual classes: presentation only, never topology state. */
.fl-device{width:var(--device-width,142px);min-height:var(--device-height,98px)}
.fl-device--compact{height:var(--device-height);min-height:var(--device-height);border-radius:10px;overflow:visible}
.fl-device--compact .fl-device-head{height:100%;gap:6px;padding:7px 9px}
.fl-device--compact .fl-device-icon{width:26px;height:26px;border-radius:7px;font-size:14px;flex:0 0 26px}
.fl-device--compact .fl-device-title strong{font-size:9px}
.fl-device--compact .fl-device-title small{display:none}
.fl-device--compact .fl-port-row{position:absolute;inset:0;display:block;padding:0;border:0;pointer-events:none}
.fl-device--compact .fl-port--compact{position:absolute;left:var(--port-x);top:var(--port-y);z-index:3;width:24px;height:24px;padding:0;transform:translate(-50%,-50%);border:0;background:transparent;pointer-events:auto}
.fl-device--compact .fl-port--compact>span{display:block;width:10px;height:10px;margin:auto;border:2px solid var(--fl-panel);border-radius:50%;background:#2563eb;box-shadow:0 0 0 1px #1d4ed8,0 2px 5px rgba(15,23,42,.28)}
.fl-device--compact .fl-port--compact[data-port-direction=output]>span{background:#f59e0b;box-shadow:0 0 0 1px #b45309,0 2px 5px rgba(15,23,42,.28)}
.fl-device--compact .fl-port--compact.is-used>span{background:#14b8a6;box-shadow:0 0 0 1px #0f766e,0 2px 5px rgba(15,23,42,.28)}
.fl-device--compact .fl-port--compact.is-pending>span{outline:3px solid rgba(20,184,166,.3)}

/* Live Map connectors are pixel-space projections of canonical device.ports[]. */
.fl-live-marker-host{overflow:visible!important}.fl-live-marker--compact>b{font-size:8px;max-width:82px}
.fl-live-ports{position:absolute;left:50%;top:50%;width:0;height:0;z-index:5;overflow:visible;pointer-events:none}
.fl-live-port{position:absolute;left:var(--port-x);top:var(--port-y);display:grid;place-items:center;width:24px;height:24px;padding:0;transform:translate(-50%,-50%);border:0;border-radius:50%;background:transparent;cursor:crosshair}
.fl-live-port{pointer-events:auto}
.fl-live-port>span{width:9px;height:9px;border:2px solid #fff;border-radius:50%;background:#2563eb;box-shadow:0 0 0 1px #1d4ed8,0 2px 6px rgba(15,23,42,.4)}
.fl-live-port.is-connected>span{background:#14b8a6;box-shadow:0 0 0 1px #0f766e,0 2px 6px rgba(15,23,42,.4)}
.fl-live-port.is-compatible>span{background:#22c55e;box-shadow:0 0 0 1px #15803d,0 2px 6px rgba(15,23,42,.4)}
.fl-live-port.is-unavailable>span{background:#ef4444;box-shadow:0 0 0 1px #b91c1c,0 2px 6px rgba(15,23,42,.4)}
.fl-live-port.is-pending>span{background:#f59e0b;outline:4px solid rgba(245,158,11,.28);box-shadow:0 0 0 1px #b45309,0 2px 6px rgba(15,23,42,.4)}
.fl-live-port:hover>span,.fl-live-port:focus-visible>span{transform:scale(1.35)}
.fl-live-port:focus-visible{outline:2px solid #f59e0b;outline-offset:0}

/* Toolora original technical schematic symbols. Schematic presentation only. */
.fl-device--symbol{
  width:var(--device-width);
  height:var(--device-height);
  min-height:var(--device-height);
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  overflow:visible;
  cursor:grab;
}
.fl-device--symbol:active{cursor:grabbing}
.fl-world,.fl-links{pointer-events:none}
.fl-link{pointer-events:stroke}
.fl-device--symbol .fl-symbol-hit{
  position:absolute;
  left:0;
  top:0;
  width:var(--device-width);
  height:var(--symbol-height);
  border-radius:8px;
}
.fl-device--symbol.is-selected{
  outline:0;
  box-shadow:none;
}
.fl-device--symbol.is-selected .fl-symbol-hit::before{
  content:"";
  position:absolute;
  inset:-5px;
  border:2px solid color-mix(in srgb,var(--device-color) 72%,#fff);
  border-radius:9px;
  background:color-mix(in srgb,var(--device-color) 7%,transparent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--device-color) 14%,transparent);
  pointer-events:none;
}
.fl-device--symbol:focus-visible{outline:0}
.fl-device--symbol:focus-visible .fl-symbol-hit::before{
  content:"";
  position:absolute;
  inset:-5px;
  border:2px dashed var(--fl-primary);
  border-radius:9px;
  pointer-events:none;
}
.fl-device-symbol{
  position:absolute;
  inset:0;
  display:block;
  overflow:visible;
  color:var(--device-color);
  shape-rendering:geometricPrecision;
}
.fl-device-symbol *{vector-effect:non-scaling-stroke}
.fl-device-symbol .fl-symbol-body{
  fill:color-mix(in srgb,var(--device-color) 8%,var(--fl-panel));
  stroke:currentColor;
  stroke-width:1.8;
}
.fl-device-symbol .fl-symbol-detail,
.fl-device-symbol .fl-symbol-signal,
.fl-device-symbol .fl-symbol-branch,
.fl-device-symbol .fl-symbol-bus{
  fill:none;
  stroke:currentColor;
  stroke-width:1.35;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.fl-device-symbol .fl-symbol-signal{stroke-width:2}
.fl-device-symbol .fl-symbol-branch{stroke-width:1.15}
.fl-device-symbol .fl-symbol-bus{stroke-width:1.7}
.fl-device-symbol .fl-symbol-core{
  fill:color-mix(in srgb,var(--device-color) 13%,var(--fl-panel));
  stroke:currentColor;
  stroke-width:1.5;
  stroke-linejoin:round;
}
.fl-device-symbol .fl-symbol-terminal{
  fill:var(--fl-panel);
  stroke:currentColor;
  stroke-width:1.2;
}
.fl-device-symbol .fl-symbol-code,
.fl-device-symbol .fl-symbol-ratio{
  fill:currentColor;
  stroke:none;
  font:700 8px/1 Inter,system-ui,sans-serif;
  text-anchor:middle;
  letter-spacing:.04em;
}
.fl-device-symbol .fl-symbol-ratio{font-size:7px;text-anchor:start}
.fl-symbol-label{
  position:absolute;
  left:50%;
  top:calc(var(--symbol-height) + 2px);
  width:max(76px,var(--device-width));
  transform:translateX(-50%);
  text-align:center;
  pointer-events:none;
}
.fl-symbol-label strong,
.fl-symbol-label small{
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.fl-symbol-label strong{color:var(--fl-text);font-size:10px;line-height:13px;font-weight:720}
.fl-symbol-label small{color:var(--fl-muted);font-size:7px;line-height:9px;letter-spacing:.035em;text-transform:uppercase}
.fl-symbol-ports{
  position:absolute;
  inset:0;
  display:block;
  padding:0;
  border:0;
  pointer-events:none;
}
.fl-port--symbol{
  position:absolute;
  left:var(--port-x);
  top:var(--port-y);
  z-index:4;
  display:grid;
  place-items:center;
  width:var(--port-hit);
  height:var(--port-hit);
  min-width:0;
  padding:0;
  transform:translate(-50%,-50%);
  border:0;
  border-radius:50%;
  background:transparent;
  pointer-events:auto;
}
.fl-port--symbol>span{
  display:block;
  width:7px;
  height:7px;
  border:1.5px solid var(--fl-panel);
  border-radius:50%;
  background:#2563eb;
  box-shadow:0 0 0 1px #1d4ed8;
}
.fl-port--symbol[data-port-direction=output]>span{background:#f59e0b;box-shadow:0 0 0 1px #b45309}
.fl-port--symbol.is-used>span{background:#14b8a6;box-shadow:0 0 0 1px #0f766e}
.fl-port--symbol.is-pending>span{outline:4px solid color-mix(in srgb,var(--fl-accent) 28%,transparent)}
.fl-port--symbol:hover>span,.fl-port--symbol:focus-visible>span{transform:scale(1.55)}
.fl-port--symbol:focus-visible{outline:2px solid var(--fl-primary);outline-offset:1px}
.fl-port--symbol.is-meter-probed>span,.fl-live-port.is-meter-probed>span{background:#ec4899;outline:5px solid rgba(236,72,153,.28);box-shadow:0 0 0 2px #be185d,0 0 12px rgba(236,72,153,.7)}
.fl-optical-meter-dialog{width:min(780px,calc(100vw - 28px))}
.fl-virtual-otdr-dialog{width:min(1180px,calc(100vw - 24px));max-height:94vh}.fl-virtual-otdr-dialog form{display:flex;flex-direction:column;max-height:92vh}.fl-virtual-otdr-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;padding:12px 18px;border-bottom:1px solid var(--fl-border);background:var(--fl-bg)}.fl-virtual-otdr-controls label{display:grid;gap:4px;color:var(--fl-muted);font-size:10px}.fl-virtual-otdr-controls input,.fl-virtual-otdr-controls select{min-width:0;border:1px solid var(--fl-border);border-radius:7px;background:var(--fl-panel);color:var(--fl-text);padding:7px}.fl-virtual-otdr-content{min-height:360px;overflow:auto;padding:16px 18px}.fl-virtual-otdr-empty{display:grid;place-items:center;min-height:300px;padding:30px;text-align:center;border:1px dashed var(--fl-border);border-radius:12px;color:var(--fl-muted)}.fl-virtual-otdr-empty b{font-size:17px;color:var(--fl-text)}.fl-virtual-otdr-empty p{max-width:720px}.fl-virtual-otdr-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:11px}.fl-virtual-otdr-summary span{display:grid;padding:11px;border:1px solid var(--fl-border);border-radius:9px;background:var(--fl-bg);font-size:10px}.fl-virtual-otdr-summary b{font-size:15px}.fl-virtual-otdr-summary .is-fail b{color:#dc2626}.fl-virtual-otdr-summary .is-pass b{color:#15803d}.fl-virtual-otdr-trace{overflow:auto;margin-bottom:12px;border:1px solid var(--fl-border);border-radius:10px;background:#08111f}.fl-virtual-otdr-trace svg{display:block;min-width:720px;width:100%;height:auto}.fl-virtual-otdr-trace rect{fill:#08111f}.fl-virtual-otdr-grid line{stroke:#64748b;stroke-width:1}.fl-virtual-otdr-line{fill:none;stroke:#22d3ee;stroke-width:2.3}.fl-virtual-otdr-markers line{stroke:#f59e0b;stroke-width:1;stroke-dasharray:4 4}.fl-virtual-otdr-markers circle{fill:#f59e0b}.fl-virtual-otdr-markers text,.fl-virtual-otdr-axis,.fl-virtual-otdr-tick{fill:#cbd5e1;font:11px ui-monospace,monospace}.fl-virtual-otdr-content tbody tr{cursor:pointer}.fl-virtual-otdr-content tbody tr:hover{background:var(--fl-bg)}.fl-virtual-otdr-explanation{margin-top:12px;padding:12px;border:1px solid var(--fl-border);border-radius:10px}.fl-virtual-otdr-explanation li,.fl-virtual-otdr-explanation p{font-size:10px;color:var(--fl-muted)}.fl-service-chain{display:flex;align-items:center;gap:5px;overflow:auto;margin-bottom:10px;padding:8px;border-radius:8px;background:var(--fl-bg);font-size:9px;white-space:nowrap}.fl-service-chain i{color:var(--fl-primary)}.fl-customer-service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:9px}.fl-customer-service-grid article{display:grid;padding:8px;border:1px solid var(--fl-border);border-radius:8px}.fl-customer-service-grid span,.fl-customer-service-grid small{font-size:9px;color:var(--fl-muted)}.fl-customer-service-grid .is-pass b{color:#15803d}.fl-customer-service-grid .is-warn b{color:#b45309}.fl-customer-service-grid .is-fail b{color:#dc2626}
.fl-virtual-otdr-symbol{flex:0 0 auto;width:48px;height:36px}.fl-virtual-otdr-symbol rect{fill:color-mix(in srgb,var(--fl-primary) 10%,var(--fl-panel));stroke:var(--fl-primary);stroke-width:1.5}.fl-virtual-otdr-symbol path{fill:none;stroke:var(--fl-primary);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.fl-virtual-otdr-symbol circle{fill:var(--fl-primary)}
.fl-field:has(#fl-password){display:none}.fl-pon-port-cards{display:grid;gap:8px}.fl-pon-port-cards article{padding:9px;border:1px solid var(--fl-border);border-radius:9px;background:var(--fl-bg)}.fl-pon-port-cards header{display:flex;justify-content:space-between;gap:7px;margin-bottom:7px}.fl-pon-port-cards header span{font-size:9px;color:var(--fl-muted)}.fl-pon-port-cards label{display:grid;gap:3px;font-size:9px;color:var(--fl-muted)}.fl-pon-port-cards select,.fl-pon-canonical select{min-width:0;border:1px solid var(--fl-border);border-radius:6px;background:var(--fl-panel);color:var(--fl-text);padding:5px}.fl-pon-port-cards dl{display:grid;grid-template-columns:1fr auto;gap:4px;margin:8px 0 0;font-size:9px}.fl-pon-port-cards dd{margin:0;font-weight:700}.fl-pon-explain{margin-top:8px;padding:8px;border:1px solid var(--fl-border);border-radius:8px}.fl-pon-explain summary{cursor:pointer;font-size:10px;font-weight:700}.fl-pon-explain ul{list-style:none;display:grid;gap:4px;margin:8px 0;padding:0}.fl-pon-explain li{display:flex;justify-content:space-between;gap:6px;font-size:9px}.fl-pon-explain li.is-pass b{color:#15803d}.fl-pon-explain li.is-fail b{color:#dc2626}.fl-pon-explain p{font-size:9px;color:var(--fl-muted)}
@media(max-width:760px){.fl-virtual-otdr-controls,.fl-virtual-otdr-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.fl-virtual-otdr-content{padding:10px}.fl-customer-service-grid{grid-template-columns:1fr}}
.fl-optical-meter-content{max-height:min(72vh,760px);overflow:auto;padding:18px}
.fl-meter-prompt,.fl-meter-invalid{display:grid;place-items:center;gap:10px;min-height:220px;text-align:center;color:var(--fl-muted)}
.fl-meter-prompt i,.fl-meter-invalid i{font-size:38px;color:var(--fl-primary)}
.fl-meter-invalid code{padding:5px 8px;border-radius:6px;background:var(--fl-bg);color:#dc2626}
.fl-link-meter-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:14px}
.fl-link-meter-head h3{margin:0;font-size:17px}.fl-link-meter-head p{margin:3px 0 0;color:var(--fl-muted);font-size:11px}
.fl-meter-result{padding:5px 10px;border-radius:999px;background:var(--fl-bg);font-size:11px;font-weight:800}.fl-meter-result.is-pass{background:rgba(34,197,94,.14);color:#15803d}.fl-meter-result.is-warning{background:rgba(245,158,11,.16);color:#b45309}.fl-meter-result.is-fail{background:rgba(239,68,68,.14);color:#b91c1c}
.fl-meter-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.fl-meter-metric{display:grid;gap:2px;padding:10px;border:1px solid var(--fl-border);border-radius:9px;background:var(--fl-bg)}.fl-meter-metric span{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--fl-muted)}.fl-meter-metric b{font-size:15px}.fl-meter-badge{justify-self:start;padding:2px 5px;border-radius:4px;background:rgba(37,99,235,.1);color:#1d4ed8;font-size:8px;font-style:normal;font-weight:750}
.fl-meter-section{margin-top:16px}.fl-meter-section h4{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--fl-muted)}.fl-meter-trace{display:flex;align-items:center;gap:5px;overflow-x:auto;padding:8px;border-radius:8px;background:var(--fl-bg);font-size:10px;white-space:nowrap}.fl-meter-trace i{color:var(--fl-primary)}
.fl-meter-breakdown{width:100%;border-collapse:collapse;font-size:10px}.fl-meter-breakdown th,.fl-meter-breakdown td{padding:6px;border-bottom:1px solid var(--fl-border);text-align:left}.fl-meter-breakdown td:last-child,.fl-meter-breakdown th:last-child{text-align:right}.fl-meter-explanation{margin:10px 0 0;padding:10px 10px 10px 28px;border-radius:8px;background:var(--fl-bg);font:11px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}
@media(max-width:760px){.fl-meter-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.fl-optical-meter-dialog footer{flex-wrap:wrap}}
.fl-symbol-status{
  position:absolute;
  right:7px;
  top:7px;
  width:8px;
  height:8px;
  border:2px solid var(--fl-panel);
  border-radius:50%;
  background:#94a3b8;
  box-shadow:0 0 0 1px #64748b;
}
.fl-symbol-status.is-online{background:#22c55e;box-shadow:0 0 0 1px #15803d}
.fl-impairment-marker{cursor:pointer;pointer-events:all;color:#9f1239}.fl-impairment-marker>circle{fill:#fff;stroke:currentColor;stroke-width:2}.fl-impairment-marker>g{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.fl-impairment-marker.is-fiber-break{color:#dc2626}.fl-impairment-marker.is-cleared{opacity:.42}.fl-impairment-marker.is-selected>circle{fill:#fef2f2;stroke-width:3}
.fl-live-impairment-host{background:transparent;border:0}.fl-impairment-symbol{width:24px;height:24px;padding:1px;border:2px solid #9f1239;border-radius:50%;background:#fff;color:#9f1239;box-shadow:0 2px 7px #0f172a40;cursor:pointer}.fl-impairment-symbol svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.fl-impairment-symbol.is-fiber-break{color:#dc2626}.fl-impairment-symbol.is-cleared{opacity:.45}.fl-impairment-symbol.is-selected{outline:3px solid #fbbf24;outline-offset:2px}
.fl-impairment-form{display:grid;gap:1rem;padding:1rem 1.25rem}.fl-impairment-form label{display:grid;gap:.35rem;font-weight:700}.fl-impairment-form select,.fl-impairment-form input{width:100%}.fl-impairment-form p{margin:0;color:var(--fl-muted)}.fl-truth-badge{display:inline-flex;margin-bottom:.75rem;padding:.2rem .5rem;border-radius:999px;background:#dbeafe;color:#1d4ed8;font-size:.68rem;font-weight:800;letter-spacing:.06em}
.fl-budget-summary.is-pass{background:linear-gradient(135deg,rgba(22,163,74,.18),rgba(34,197,94,.08))}.fl-budget-summary.is-fail{background:linear-gradient(135deg,rgba(220,38,38,.18),rgba(239,68,68,.08))}.fl-budget-summary.is-n-a{background:var(--fl-bg)}.fl-optical-acceptance .fl-result-banner{margin-top:10px}.fl-fault-impact{margin-top:12px;padding:10px;border:1px solid var(--fl-border);border-radius:9px;background:var(--fl-bg)}.fl-fault-impact h3{margin-top:0}.fl-fault-actions{display:grid;grid-template-columns:1fr 1fr}.fl-fault-actions button:disabled{opacity:.45;cursor:not-allowed}.fl-impairment-inspector .fl-truth-badge{margin-bottom:10px}

/* Inspector auto-hide is presentation-only: the zero-width track gives space back to the canvas. */
.fl-workspace{--fl-inspector-width:300px;grid-template-columns:246px minmax(0,1fr) var(--fl-inspector-width);transition:grid-template-columns .18s ease}
.fl-workspace.is-inspector-collapsed{grid-template-columns:246px minmax(0,1fr) 0}
.fl-inspector{width:var(--fl-inspector-width);min-width:0;justify-self:end;transition:transform .18s ease,opacity .14s ease,visibility 0s linear 0s}
.fl-workspace.is-inspector-collapsed .fl-inspector{transform:translateX(100%);opacity:0;visibility:hidden;pointer-events:none;transition:transform .18s ease,opacity .14s ease,visibility 0s linear .18s}
.fl-inspector-collapse{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--fl-border);border-radius:8px;background:var(--fl-bg);color:var(--fl-muted)}
.fl-inspector-collapse:hover,.fl-inspector-collapse:focus-visible,.fl-inspector-handle:hover,.fl-inspector-handle:focus-visible{border-color:var(--fl-primary);color:var(--fl-primary);outline:0}
.fl-inspector-handle{position:absolute;z-index:24;right:0;top:50%;display:flex;align-items:center;gap:4px;min-height:38px;padding:7px 6px;border:1px solid var(--fl-border);border-right:0;border-radius:9px 0 0 9px;background:var(--fl-panel);color:var(--fl-muted);box-shadow:var(--fl-shadow);transform:translateY(-50%) translateX(105%);opacity:0;pointer-events:none;transition:transform .18s ease,opacity .14s ease}
.fl-inspector-handle span{font-size:9px;font-weight:800;letter-spacing:.05em;writing-mode:vertical-rl}
.fl-workspace.is-inspector-collapsed .fl-inspector-handle{transform:translateY(-50%) translateX(0);opacity:1;pointer-events:auto}
@media(max-width:1100px) and (min-width:781px){.fl-workspace{--fl-inspector-width:270px;grid-template-columns:220px minmax(0,1fr) var(--fl-inspector-width)}.fl-workspace.is-inspector-collapsed{grid-template-columns:220px minmax(0,1fr) 0}}
@media(max-width:780px){.fl-workspace,.fl-workspace.is-inspector-collapsed{display:block}.fl-inspector{width:min(300px,88vw);justify-self:auto;opacity:1}.fl-workspace.is-inspector-collapsed .fl-inspector{transform:translateX(105%);opacity:1;visibility:hidden}.fl-workspace:not(.is-inspector-collapsed) .fl-inspector{transform:translateX(0);visibility:visible}.fl-inspector-handle{top:50%}}
@media(prefers-reduced-motion:reduce){.fl-workspace,.fl-inspector,.fl-inspector-handle{transition:none!important}}

/* Categorized Inspector: topology and engineering state remain owned by the existing renderer. */
.fl-inspector{display:flex;flex-direction:column;overflow:hidden;padding:0}
.fl-inspector>.fl-panel-title{position:relative;z-index:2;flex:0 0 auto;margin:0;padding:18px;background:var(--fl-panel);border-bottom:1px solid var(--fl-border);box-shadow:0 3px 10px rgba(15,23,42,.04)}
.fl-inspector>[data-inspector]{min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:12px 12px 18px;scrollbar-gutter:stable}
.fl-inspector-category{margin:0 0 8px;border:1px solid var(--fl-border);border-radius:10px;background:var(--fl-panel);overflow:clip}
.fl-inspector-category>summary{min-height:48px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title icon" "summary icon";align-items:center;gap:1px 8px;padding:9px 10px;cursor:pointer;list-style:none;touch-action:manipulation;user-select:none}
.fl-inspector-category>summary::-webkit-details-marker{display:none}
.fl-inspector-category>summary:hover,.fl-inspector-category>summary:focus-visible{background:var(--fl-bg);outline:0}
.fl-inspector-category-title{grid-area:title;font-size:10px;font-weight:800;letter-spacing:.075em;text-transform:uppercase;color:var(--fl-text)}
.fl-inspector-category-summary{grid-area:summary;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px;color:var(--fl-muted)}
.fl-inspector-category>summary i{grid-area:icon;color:var(--fl-muted);transition:transform .16s ease}
.fl-inspector-category[open]>summary i{transform:rotate(180deg)}
.fl-inspector-category.is-fault>summary,.fl-inspector-category.is-down>summary,.fl-inspector-category.is-los>summary{box-shadow:inset 3px 0 #dc2626}
.fl-inspector-category.is-warning>summary,.fl-inspector-category.is-handoff-ready>summary,.fl-inspector-category.is-addressing>summary{box-shadow:inset 3px 0 #f59e0b}
.fl-inspector-category.is-up>summary,.fl-inspector-category.is-registered>summary,.fl-inspector-category.is-available>summary,.fl-inspector-category.is-clear>summary{box-shadow:inset 3px 0 #16a34a}
.fl-inspector-category-body{padding:11px 10px 2px;border-top:1px solid var(--fl-border)}
.fl-inspector-category-body>.fl-inspector-section{margin:0 0 11px;padding:0 0 11px}
.fl-inspector-category-body>.fl-inspector-section:last-child{margin-bottom:0;border-bottom:0}
.fl-inspector-category-body>.fl-inspector-section>h3:first-child{margin-top:0}
.fl-inspector-category .fl-inspector-category{margin-inline:0}
@media(max-width:780px){.fl-inspector>.fl-panel-title{padding:14px}.fl-inspector>[data-inspector]{padding:10px}.fl-inspector-category>summary{min-height:52px;padding:10px 11px}}
@media(prefers-reduced-motion:reduce){.fl-inspector-category>summary i{transition:none}}
.fl-language-menu>.fl-toolbar-menu-panel{right:0;left:auto;min-width:180px}.fl-language-menu a{width:100%;display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:8px;color:var(--fl-muted);text-decoration:none;white-space:nowrap}.fl-language-menu a:hover,.fl-language-menu a:focus-visible{outline:0;background:var(--fl-bg);color:var(--fl-primary)}.fl-language-menu a[aria-current=page]{color:var(--fl-primary);font-weight:700}
