/* GN Telecom: identidade visual e controles do painel. Sem fontes ou imagens externas. */
:root{--ink:#163348;--muted:#647889;--line:#dce6ed;--accent:#0075b6;--light:#f1f6fa;--nav:#09283d}
.map-area{isolation:isolate}
.basemap-control{position:absolute;z-index:650;top:12px;right:14px;display:flex;border:1px solid #c5d5e1;border-radius:10px;background:#fff;box-shadow:0 2px 10px #1232;overflow:hidden}.basemap-control button{border:0;border-radius:0;padding:10px 14px;font-size:12px}.basemap-control button[aria-pressed=true]{background:#0075b6;color:#fff}.map-area .map-tools{top:65px}.map-area .map-notice{top:118px;max-width:400px;font-size:11px}.leaflet-control-attribution{max-width:75%;line-height:1.35!important}
.network-marker{background:none;border:0}.network-marker svg{width:100%;height:100%;display:block;filter:drop-shadow(0 1px 2px #16334870)}.network-marker.is-selected{outline:3px solid #19a4ec;outline-offset:5px;border-radius:5px}.result-symbol{width:26px;height:26px;flex:0 0 26px}.result-symbol svg{width:100%;height:100%}.marker-fields{padding:12px;background:#f2f7fa;border:1px solid #dce6ed;border-radius:10px;margin:15px 0}.marker-preview-row{display:flex;align-items:center;justify-content:space-between;min-height:66px;font-size:12px}.marker-preview-row>span{display:grid;place-items:center;min-width:70px;min-height:66px}#marker-size-value{float:right;color:#0075b6}.marker-fields input[type=range]{padding:0;accent-color:#0075b6}.marker-fields .check{font-size:11px}.marker-fields label:last-child{margin-bottom:0}
#symbol-legend{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;border-bottom:1px solid var(--line);padding-bottom:12px}#symbol-legend>div{display:flex;align-items:center;gap:7px;font-size:10px}.legend-symbol{width:22px;height:22px;flex:0 0 22px}.legend-symbol svg{display:block;width:100%;height:100%}.legend-heading{display:block;margin-top:12px;font-size:11px}
.reason-shortcuts{display:flex;flex-wrap:wrap;gap:5px;margin:-6px 0 13px}.reason-shortcuts button{font-size:10px;padding:5px 8px;border-radius:6px;background:#eff7fc;color:#12618e;border-color:#c5dfed}.closure-reason-wrap{flex:1;min-width:0}.closure-reason-wrap .reason-shortcuts{margin:7px 0 0}.field-help{font-size:10px;line-height:1.6;color:var(--muted);margin:-7px 0 14px}.status-help{font-size:11px;padding:0 0 12px}.verify-operating{font-size:11px;width:100%;margin:0 0 18px;color:#086e64;background:#edf9f6;border-color:#b0d9d1}.status-definitions{font-size:12px;line-height:1.6}.status-definitions dt{font-weight:700;margin-top:13px}.status-definitions dd{margin:4px 0 0;color:var(--muted)}
@media(max-width:650px){.basemap-control{top:10px;right:8px}.basemap-control button{padding:9px 11px;font-size:11px}.map-area .map-tools{top:58px;right:8px}.map-area .map-notice{top:137px;left:10px;right:10px}.closure-footer .reason-shortcuts{gap:3px}.closure-footer .reason-shortcuts button{font-size:9px;padding:5px}.closure-footer{align-items:flex-end}.leaflet-control-attribution{font-size:8px!important}}
button{transition:background .14s,border-color .14s,box-shadow .14s}button:disabled{cursor:not-allowed}.primary{background:#0075b6;border-color:#0075b6}.primary:hover{background:#005f95}input:focus,select:focus,textarea:focus,button:focus-visible{outline-color:#74caed}
.login{background:radial-gradient(ellipse at 18% 25%,#17415a 0,transparent 55%),#071c2b;padding:36px}
.login-shell{width:min(1060px,100%);display:grid;grid-template-columns:1.2fr 1fr;overflow:hidden;border-radius:24px;box-shadow:0 30px 100px #0005;border:1px solid #23465a;background:#fff}
.login-hero{background:radial-gradient(ellipse at 90% 80%,#104e62 0,transparent 60%),#0a2b40;color:#fff;padding:42px 44px 32px;position:relative;overflow:hidden}
.login-brand{display:flex;gap:20px;align-items:center;margin-bottom:48px}.logo-plate{width:128px;height:104px;background:#fff;border-radius:16px;display:grid;place-items:center}.logo-plate img{display:block;width:124px;height:99px;object-fit:contain}.login-brand>span{font-size:12px;letter-spacing:3px;color:#a4c4d5;line-height:1.7}.login-brand strong{font-size:22px;letter-spacing:4px;color:#fff}
.login-hero .eyebrow{color:#6bd1e7;font-size:10px;letter-spacing:2px}.login-hero h1{font-size:54px;font-weight:720;line-height:1.08;letter-spacing:-2px;margin:16px 0 20px}.login-intro{font-size:14px;line-height:1.8;color:#bad1dd}.login-network{display:block;width:calc(100% + 35px);max-height:200px;margin:0 -16px 10px}.brand-slogan{font-size:12px;color:#b0cddc;letter-spacing:.15px}.login-hero>.brand-slogan{margin:10px 0 0;font-size:13px;color:#cfebf5}
.login-card{padding:54px 44px;max-width:none;display:flex;flex-direction:column;justify-content:center;border:0;border-radius:0;box-shadow:none}.login-card .eyebrow{color:#0075b6;font-size:10px}.login-card h2{font-size:29px;letter-spacing:-.8px;margin:10px 0 14px}.login-card .muted{font-size:13px;line-height:1.7;margin-bottom:32px}.login-card input{background:#f6f9fc;padding:13px;margin-top:8px}.login-card label{margin-bottom:21px}.login-card .primary{margin-top:6px;padding:14px;box-shadow:0 5px 15px #0075b626}.login-card small{font-size:10px;margin-top:30px}
header{height:78px;background:var(--nav);border-bottom:1px solid #28506a;padding:0 20px;color:#fff;gap:16px}.header-start{display:flex;align-items:center;gap:18px;min-width:0}.header-logo{display:grid;place-items:center;width:74px;height:60px;background:#fff;border-radius:10px;flex-shrink:0}.header-logo img{object-fit:contain;display:block}.brand{gap:12px}.brand-copy{display:grid;gap:5px}.brand strong{font-size:13px;letter-spacing:1px;color:#fff}.brand strong span{color:#78c6e8}.brand-copy .brand-slogan{font-size:10px}.brand small{background:#163e55;color:#a7c8d9;font-size:8px;border:1px solid #30556b}.header-start>button{color:#d4e9f3;background:#15394f;border-color:#315367;display:flex;align-items:center;gap:7px;font-size:11px}.header-start>button[aria-expanded=true]{background:#205570;border-color:#427d98}header nav button{background:transparent;color:#d2e3ed;border:1px solid transparent;border-radius:7px;padding:8px 10px}header nav button:hover{background:#1c455e;border-color:#31546a}#user-label{color:#a6c6d7;border-color:#37566b;font-size:10px}#logout-button{border-color:#37566b}
.sidebar{padding-top:24px;background:#fbfdff;box-shadow:4px 0 20px #12344a06;z-index:510}.sidebar .eyebrow{color:#0076a8}.sidebar h2{font-size:23px;letter-spacing:-.5px;margin-bottom:23px}.sidebar input[type=search]{background:#f0f6fa;border-color:#d2e1eb}.sidebar .check{color:#607787}.result{border-radius:8px;margin:2px 0;border-bottom-color:transparent;padding:11px 8px}.result.active{background:#e4f2fa;border-left:3px solid #008cc4}.result-dot{border:1px solid #8096a5;box-shadow:0 0 0 3px #e8eff5}.result small{color:#758795}.source-note{background:transparent}.explorer-hidden .sidebar{display:none}.list-heading{margin-top:8px}.detail{box-shadow:-4px 0 22px #12344a0b}.detail-actions #open-closure{background:#e2f2f8;border-color:#a1cedf;color:#046b98;font-weight:700}
.map-tools{top:16px;right:16px;gap:8px}.map-tools button{border-radius:10px;padding:12px 15px;box-shadow:0 4px 18px #12344a23;font-size:12px}.map-tools #draw-cable{background:#0075b6;color:#fff;border-color:#0075b6}.map-tools #draw-cable:hover{background:#005f95}.map-legend{border-radius:12px;box-shadow:0 5px 20px #12344a14}.map-tag{border:1px solid #d7e3ea;border-radius:10px;padding:11px 14px;color:#476677}.leaflet-bar{border:1px solid #c9d8e2!important;border-radius:9px;overflow:hidden;box-shadow:0 3px 12px #1233}.leaflet-bar a{color:#27526b}.draw-bar{border-color:#7bb6d2;border-top:3px solid #0075b6}.draw-bar strong{font-size:13px}.drawing~.map-legend,.drawing~.map-tag{display:none}
.vertex-remove{background:#fff4f3;border:1px solid #da7878;border-radius:8px;color:#b32e37;font-size:23px;font-weight:700;line-height:24px;text-align:center;box-shadow:0 2px 7px #1234;cursor:pointer}.vertex-remove:hover,.vertex-remove:focus{background:#b32e37;color:white;outline:2px solid white}.vertex.selected{background:#bce9fa;border-color:#006b9c}.vertex.midpoint{cursor:copy}
.closure-dialog{border:1px solid #9cb9cb;box-shadow:0 24px 100px #00152666}.closure-head{background:#0c2e43;color:white;border-color:#224e67;padding:17px 23px}.closure-heading{display:flex;gap:17px;align-items:center;min-width:0}.closure-heading>div:last-child{min-width:0}.closure-logo{width:80px;height:65px;background:white;border-radius:11px;display:grid;place-items:center;flex-shrink:0}.closure-logo img{display:block;object-fit:contain}.closure-head h2{font-size:23px;letter-spacing:-.5px;overflow-wrap:anywhere}.closure-head .eyebrow{color:#6bcce2;letter-spacing:1.9px}.closure-head .muted{color:#abc7d8;font-size:11px}.closure-head .badge{background:#5b461b;color:#ffdf98;border:1px solid #826a35}.closure-head #closure-close{background:#20465c;border:1px solid #42647a;color:white}.closure-toolbar{padding:11px 20px;background:#fff}.closure-toolbar button{border-radius:8px;background:#f8fbfd}.closure-toolbar #closure-connect{border-color:#b6d7e4;color:#046d8e;background:#eaf6fa}.closure-toolbar #closure-connect.active{background:#0075b6;border-color:#0075b6;color:#fff}.closure-canvas-wrap{background:#f1f6fa}.closure-hint{background:#eaf4f9;color:#4a6f83;border-bottom-color:#d9e9f1}.closure-scroll{background-image:radial-gradient(#c7d7e1 .8px,transparent .8px);background-size:20px 20px}.closure-inspector{background:#fbfdfe;border-left-color:#d7e5ee}.closure-inspector h3{color:#20475f;font-size:13px}.connection-item{background:#fff;border-color:#dae6ed;border-radius:9px;line-height:1.5}.connection-item.active{background:#e6f5fa;border-color:#70b8d3}.connection-item strong{color:#1f526d}.stat-box{background:#eaf3f8;border:1px solid #d7e8f0}.stat-box strong{color:#0075a9}.closure-footer{background:#fff}.closure-footer label{font-size:11px}.closure-footer input{background:#f7fafc}
.splitter-presets{display:flex;flex-wrap:wrap;gap:8px;margin:5px 0 12px}.splitter-presets button{background:#f0f6f9;min-width:60px}.splitter-presets button.active{color:#fff;background:#08796e;border-color:#08796e}.splitter-summary{color:#176358;background:#eaf7f2;border-left:3px solid #399c87;padding:10px 13px;font-size:12px;border-radius:0 8px 8px 0}.svg-splitter .svg-node-title:hover{opacity:1}.svg-splitter .svg-node-title:hover .splitter-triangle{filter:brightness(1.06)}.svg-splitter .svg-node-title:focus-visible{outline:none}.svg-splitter .svg-node-title:focus-visible .splitter-triangle{stroke:#028ccd;stroke-width:4}.closure-readonly .svg-node-title,.closure-readonly .svg-tray-title{cursor:pointer}
@media(min-width:1550px){.sidebar{width:306px}}
@media(max-width:1150px){.brand small,.brand-copy .brand-slogan{display:none}.header-start{gap:12px}.header-start>button span:last-child{display:none}.brand{gap:10px}header{padding:0 14px}#user-label{display:none}}
@media(max-width:900px){.login{padding:24px}.login-shell{grid-template-columns:1fr 1fr}.login-hero{padding:35px 27px}.login-card{padding:38px 28px}.login-hero h1{font-size:44px}.login-brand{gap:14px}.login-brand>span{font-size:9px}.login-brand strong{font-size:18px}.logo-plate{width:108px;height:90px}.logo-plate img{width:106px;height:85px}.closure-head h2{font-size:20px}.closure-logo{width:62px;height:52px}.closure-logo img{width:62px;height:50px}.map-tools{flex-direction:row}.map-tools button{padding:10px;font-size:11px}}
@media(max-width:700px){header{min-height:76px;height:auto;flex-wrap:wrap;gap:8px;padding:8px 12px}.header-start{justify-content:flex-start;flex:1}.header-logo{width:57px;height:46px}.header-logo img{width:56px;height:45px}.brand strong{font-size:12px}.brand-copy .brand-slogan{display:block;font-size:8px}.header-start>button{padding:8px 10px}header nav{width:100%;justify-content:flex-end;gap:3px}header nav button{padding:5px 10px;font-size:10px}.main{position:relative}.sidebar{position:absolute;left:0;top:0;bottom:0;width:min(305px,90vw);z-index:610;padding:20px 17px;box-shadow:8px 0 30px #1234}.sidebar h2{font-size:22px}.sidebar label{font-size:12px}.sidebar input,.sidebar select{font-size:12px;padding:10px}.sidebar .eyebrow{font-size:10px}.filter-pair{grid-template-columns:1fr 1fr;gap:8px}.result strong{font-size:12px}.map-tools button{padding:10px 11px;font-size:11px}.closure-head{padding:12px}.closure-heading{gap:10px}.closure-head h2{font-size:17px}.closure-head .eyebrow{font-size:8px}.closure-head .muted{font-size:9px}.closure-head .button-row{flex-shrink:0}.closure-toolbar{padding:9px}.closure-footer{gap:8px}.closure-footer label{font-size:10px}.closure-inspector{background:#fbfdfe}.closure-logo{width:54px;height:46px}.closure-logo img{width:54px;height:43px}.closure-footer input{min-width:0}}
@media(max-width:620px){.login{padding:16px}.login-shell{grid-template-columns:1fr;border-radius:18px}.login-hero{padding:24px 26px 22px}.login-brand{margin-bottom:0}.login-hero>.eyebrow,.login-hero h1,.login-intro,.login-network{display:none}.login-hero>.brand-slogan{font-size:11px;margin-top:16px}.login-card{padding:30px 26px}.login-card h2{font-size:26px}.login-card .muted{margin-bottom:24px}.login-card label{margin-bottom:17px}.login-card small{margin-top:21px}.closure-logo{display:none}.closure-head{gap:8px}.closure-head h2{max-width:calc(100vw - 100px)}.closure-head .muted{display:block;line-height:1.5}.splitter-presets{gap:6px}.splitter-presets button{min-width:50px;padding:8px}.draw-bar{padding:12px}.draw-bar .button-row button{padding:9px;font-size:11px}.draw-bar p{line-height:1.5}.map-tools{top:10px;right:10px}.map-legend{font-size:10px}.map-tag{display:none}}
@media(prefers-reduced-motion:reduce){button{transition:none}}
