:root{font-family:Inter,Arial,sans-serif;color:#243650;background:#f4f7fc;font-synthesis:none;--green:#2563eb;--muted:#85938f;--border:#e3eaf5}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{outline-offset:4px}button{cursor:pointer}button{border:1px solid var(--border);background:white;border-radius:8px;padding:10px 15px;color:#34473f;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:13px;font-weight:600}button:hover{background:#edf4ff}button.primary{background:var(--green);border-color:var(--green);color:white}svg.icon{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.shell{display:flex;min-height:100vh}.sidebar{width:232px;background:#10264d;color:#a0b8da;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;padding:32px 18px;z-index:20}.brand{display:flex;align-items:center;gap:10px;color:white;font-size:23px;font-weight:750;letter-spacing:-1px;padding:0 12px}.brand-mark{background:#69bdff;color:#103269;border-radius:9px;width:34px;height:36px;display:grid;place-items:center}.brand span:last-child{font-weight:400;color:#bad8ff}.workspace{margin:31px 5px 26px;padding:12px;border:1px solid #294670;border-radius:8px;font-size:12px;display:flex;align-items:center;gap:10px;color:#e4efff}.workspace small{display:block;color:#9bafcc;margin-top:4px;font-size:10px}.workspace .avatar{background:#294670}.nav-label{font-size:10px;letter-spacing:1.6px;margin:10px 14px;color:#7995be}.nav button{width:100%;justify-content:flex-start;background:transparent;color:#a7bddc;border:0;padding:13px 15px;margin:3px 0;font-size:13px;font-weight:500}.nav button.active{background:#1e4277;color:#8fd3ff}.nav button:hover{background:#1d3a64}.count{margin-left:auto;background:#634c32;color:#f2cb89;font-size:10px;border-radius:5px;padding:3px 6px}.sidebar-bottom{margin-top:auto;padding-top:70px}.health{border:1px solid #294670;border-radius:8px;padding:13px;font-size:11px;margin-bottom:18px}.health small{display:block;color:#8ca4c7;margin:8px 0 0 12px}.dot{width:6px;height:6px;background:#53a4f2;border-radius:50%;display:inline-block;margin-right:6px}.profile{display:flex;align-items:center;gap:10px;font-size:12px;color:#e2ecfa}.avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#e5eefc;font-size:11px;flex-shrink:0}.profile small{display:block;color:#90a8cc;font-size:10px;margin-top:5px}.profile button{margin-left:auto;padding:5px;background:none;color:#a7bddc;border:0}.main{margin-left:232px;width:calc(100% - 232px)}.topbar{height:76px;background:white;border-bottom:1px solid var(--border);padding:0 36px;display:flex;align-items:center;justify-content:space-between}.breadcrumb{font-size:12px;color:#89968f;display:flex;align-items:center;gap:12px}.breadcrumb strong{font-weight:500;color:#35483f}.top-actions{display:flex;align-items:center;gap:19px}.demo{font-size:10px;letter-spacing:.7px;background:#f1f5fc;padding:6px 9px;border:1px solid #e1e9f3;border-radius:5px;color:#7b897f}.top-actions button{border:0;padding:5px}.top-actions .avatar{color:#436b56}.content{max-width:1640px;padding:33px 36px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px;gap:16px}h1{font-size:27px;letter-spacing:-1px;margin:0 0 9px;font-weight:650}p{font-size:12px;color:#84928b;margin:0;line-height:1.6}.actions{display:flex;gap:9px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}.stat{background:white;border:1px solid var(--border);border-radius:11px;padding:20px;position:relative}.stat-label{font-size:12px;color:#72827a}.stat-icon{position:absolute;right:17px;top:16px;width:32px;height:32px;background:#edf5ff;color:#468ae1;border-radius:8px;display:grid;place-items:center}.stat-value{font-size:32px;letter-spacing:-1px;font-weight:600;margin:17px 0 12px}.stat-foot{font-size:10px;color:#93a098}.stat-foot b{color:#397ad0;font-weight:500;margin-right:5px}.stat.warning .stat-icon{background:#fff5e7;color:#c18b3d}.stat.warning .stat-foot b{color:#be8d42}.panel{border:1px solid var(--border);background:white;border-radius:11px;overflow:hidden}.chart-row{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(280px,1fr);gap:22px;margin-bottom:24px}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;gap:12px}.panel-title{font-size:14px;font-weight:600;letter-spacing:-.2px}.panel-head p{font-size:10px;margin-top:7px}.panel-head select{font-size:11px;padding:7px 9px}.traffic-summary{display:flex;gap:30px;padding:0 24px;font-size:10px;color:#89978e}.traffic-summary strong{display:block;font-size:20px;font-weight:550;color:#29496e;margin:7px 0}.traffic-summary strong small{font-size:11px;font-weight:400;color:#8a968e}.blue{background:#8dccf7}.traffic-chart{padding:8px 20px 12px;position:relative}.traffic-chart svg{display:block;width:100%;height:160px}.axis-labels{display:flex;justify-content:space-between;color:#a1aaa6;font-size:9px;margin:0 5px 0 27px}.availability{display:flex;align-items:center;justify-content:center;gap:25px;padding:13px 22px 22px}.donut{width:144px;height:144px;border-radius:50%;background:conic-gradient(#3578e5 0 94.6%,#e7b75f 94.6% 98%,#e8edeb 98% 100%);display:grid;place-items:center;transform:rotate(-90deg);flex-shrink:0}.donut-inner{width:117px;height:117px;border-radius:50%;background:white;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(90deg)}.donut-inner strong{font-size:26px;letter-spacing:-1px;font-weight:550}.donut-inner small{font-size:10px;color:#8b9990;margin-top:6px}.legend{display:grid;gap:17px;font-size:11px}.legend div{white-space:nowrap}.legend b{display:block;padding-left:12px;font-weight:550;margin-top:5px;font-size:14px}.amber{background:#e4b65e}.gray{background:#dce4df}.availability-footer{border-top:1px solid var(--border);margin:0 22px;padding:12px 0;display:flex;justify-content:space-between;font-size:10px;color:#8a978f}.availability-footer b{color:#4384d3;font-weight:500}.table-tools{display:flex;justify-content:space-between;gap:12px;padding:0 22px 18px}.search{display:flex;align-items:center;gap:9px;border:1px solid var(--border);border-radius:7px;padding:0 11px;color:#98a49e;min-width:230px}.search input{width:100%;border:0;background:transparent;padding:10px 0;font-size:11px;outline:none;color:#344d70}select{border:1px solid var(--border);border-radius:7px;padding:9px 12px;background:white;color:#64756a;font-size:11px}.filters{display:flex;gap:9px}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{background:#fafbfa;color:#89988f;font-size:10px;font-weight:500;padding:12px 22px;border-block:1px solid var(--border)}td{padding:15px 22px;border-bottom:1px solid #f0f3f1;font-size:11px;color:#6b7e72}td strong{font-size:11px;color:#344d70;font-weight:600}td small{display:block;color:#94a298;font-size:9px;margin-top:5px}.device{display:flex;gap:11px;align-items:center}.device-icon{background:#f1f5fc;border:1px solid #e4ebf5;border-radius:7px;padding:8px;color:#7b98be;display:flex}.vendor{font-size:9px;font-weight:650;letter-spacing:.3px;padding:4px 7px;border-radius:4px;background:#f2f2fa;color:#8581b0}.vendor.ZTE{background:#edf4fb;color:#438abe}.vendor.Huawei{background:#fff0ed;color:#c47c75}.vendor.Intelbras{background:#edf8ef;color:#4e9a5e}.status{font-size:10px;color:#347fd0;background:#edf5ff;padding:5px 8px;border-radius:5px;display:inline-block}.status.alert{background:#fff6e6;color:#b48835}.status.offline{background:#fff0ee;color:#c07164}.signal{color:#4383c8;font-variant-numeric:tabular-nums}.table-end{display:flex;align-items:center;justify-content:space-between;padding:15px 22px;color:#94a097;font-size:10px}.pagination{display:flex;gap:5px}.pagination button{padding:5px 9px;font-size:10px}.pagination .selected{background:#eef5ff;color:#417dc4}.more{padding:3px 7px;border:0;font-size:17px;background:none}.bottom-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:22px;margin-top:24px}.event{display:flex;align-items:center;gap:12px;padding:13px 22px;border-top:1px solid #f1f4f2;font-size:11px}.event strong{font-weight:500}.event p{font-size:10px;margin-top:5px}.event time{margin-left:auto;font-size:9px;color:#9aa59f;white-space:nowrap}.event-mark{width:30px;height:30px;border-radius:50%;background:#eff5ff;color:#5983be;display:grid;place-items:center}.event-mark.warn{background:#fff5e6;color:#bf934e}.capacity{padding:8px 22px 18px}.capacity-line{display:flex;justify-content:space-between;font-size:10px;margin-bottom:9px;color:#75877a}.bar{height:6px;border-radius:5px;background:#eff3f0;overflow:hidden;margin-bottom:18px}.bar span{display:block;height:100%;background:#70adf2;border-radius:5px}.bar span.w62{width:62%}.bar span.w41{width:41%}.bar span.w78{width:78%;background:#cfb678}.footer{display:flex;justify-content:space-between;color:#a0aaa4;font-size:9px;margin-top:25px}.link{border:0;background:none;color:#487ec5;font-size:10px;padding:0}.empty{padding:50px;text-align:center;color:#93a097}.mobile-menu{display:none}dialog{border:1px solid var(--border);border-radius:15px;padding:28px;width:min(480px,92vw);box-shadow:0 20px 100px #122c2530}dialog::backdrop{background:#0e211d88;backdrop-filter:blur(4px)}dialog h2{margin:0 0 22px;font-size:21px}label{display:block;font-size:12px;color:#63776b;margin:15px 0 6px}dialog input,dialog select,.login input{display:block;width:100%;padding:12px;border:1px solid #dce5df;border-radius:7px;color:#274131;background:white}dialog .actions{justify-content:flex-end;margin-top:25px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.detail-grid small{display:block;color:#8a9a8f;margin-bottom:7px}.detail-grid div{font-size:13px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#193c72;color:white;border-radius:9px;padding:14px 22px;font-size:12px;box-shadow:0 5px 20px #0002;z-index:100;display:none}#toast.visible{display:block}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-art{background:#10264d;padding:50px;display:flex;flex-direction:column;position:relative;overflow:hidden}.login-art h1{color:#e3eeff;font-size:52px;max-width:450px;line-height:1.15;margin-top:120px;z-index:1}.login-art p{color:#9bb8dd;margin-top:20px;font-size:15px;max-width:370px}.orb{width:480px;height:480px;border:1px solid #376399;border-radius:50%;position:absolute;bottom:-170px;right:-80px;box-shadow:0 0 0 55px #1e3a61,0 0 0 56px #355b88,0 0 0 110px #16335a,0 0 0 111px #2a4f78}.login-form{display:flex;align-items:center;justify-content:center;padding:35px}.login-box{width:350px}.login-box h1{margin-bottom:12px}.login-box form{margin-top:30px}.login-box button{width:100%;margin-top:20px}.login-box .demo{display:inline-block;margin-bottom:25px}.login-error{color:#b36b58;margin-top:12px}.login-note{margin-top:24px;font-size:11px}.section-note{margin-bottom:20px}.alarm-page .event{padding:22px}.refreshing{animation:rotate 1s linear infinite}@keyframes rotate{to{transform:rotate(360deg)}}@media(min-width:1500px){.content{padding:38px 48px}.stat{padding:24px}.traffic-chart svg{height:180px}td{padding-top:18px;padding-bottom:18px}}@media(max-width:1150px){.sidebar{width:200px;padding-inline:12px}.main{margin-left:200px;width:calc(100% - 200px)}.content{padding:25px 22px}.topbar{padding-inline:22px}.availability{gap:16px;padding-inline:12px}.donut{width:116px;height:116px}.donut-inner{width:94px;height:94px}.donut-inner strong{font-size:22px}.chart-row{grid-template-columns:1.5fr 1fr}.stats{gap:12px}.stat{padding:17px}.stat-icon{display:none}.page-heading .actions button{font-size:11px}}@media(max-width:850px){.chart-row,.bottom-grid{grid-template-columns:1fr}.availability{justify-content:space-evenly}.stats{grid-template-columns:repeat(2,1fr)}.page-heading{align-items:flex-start}.page-heading .actions{flex-direction:column}.top-actions{gap:9px}.content{padding:24px 18px}.table-tools{flex-wrap:wrap}.search{flex:1}.filters{flex-wrap:wrap}}@media(max-width:600px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:232px}.sidebar.open{transform:translateX(0);box-shadow:0 0 0 100vmax #0006}.main{margin:0;width:100%}.mobile-menu{display:inline-flex;padding:4px;border:0}.topbar{height:62px;padding:0 18px}.breadcrumb{gap:8px}.breadcrumb>span{display:none}.top-actions .demo{font-size:8px}.page-heading{flex-direction:column}.page-heading .actions{flex-direction:row}h1{font-size:25px}.stats{gap:10px}.stat-value{font-size:28px}.stat-foot{font-size:9px}.panel-head{padding:18px}.table-tools{padding:0 18px 16px}.filters{width:100%}.filters select{flex:1;min-width:0}.footer span:last-child{display:none}.login{grid-template-columns:1fr}.login-art{display:none}.login-form{min-height:100vh}.content{padding:24px 15px}.event{padding-inline:16px}.event time{font-size:8px}}

.dialog-olt{width:min(680px,94vw);max-height:90vh;overflow-y:auto}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.form-section{border:0;border-top:1px solid var(--border);padding:15px 0 0;margin:24px 0 0;min-width:0}.form-section legend{font-size:12px;font-weight:600;color:#355b88;padding-right:12px}.optional{font-size:10px;font-weight:400;color:#94a3b8;margin-left:5px}.snmp-toggle{display:flex;align-items:center;gap:9px;margin:0 0 6px}.snmp-toggle input{width:16px;height:16px;accent-color:#2563eb}#snmp-fields[hidden]{display:none}dialog input:disabled{background:#f1f5fc}dialog input:focus,dialog select:focus{outline:2px solid #93c5fd;border-color:#60a5fa}@media(max-width:600px){.form-grid{grid-template-columns:1fr}.dialog-olt{padding:22px}}

.brand{gap:8px;padding:0;font-size:28px;letter-spacing:-1.2px;white-space:nowrap}.brand-mark{flex-shrink:0;width:30px}.brand-name{font-weight:750}.login-art .brand{font-size:38px;gap:12px}.login-art .brand-mark{width:40px;height:42px}@media(min-width:601px) and (max-width:1150px){.sidebar .brand{font-size:25px;gap:6px}.sidebar .brand-mark{width:26px}}

.activity-panel{margin-top:24px}button:disabled{opacity:.55;cursor:wait}

.real-donut{width:145px;height:145px;position:relative}.real-donut svg{width:100%;height:100%}.real-donut>div{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column}.real-donut strong{font-size:25px}.real-donut small{font-size:11px;color:#899bb2;margin-top:6px}.signal-low{color:#b77423;font-weight:600}
.lan-section{margin-top:24px;border-top:1px solid var(--border);padding-top:18px}.lan-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;font-size:13px}.lan-ports{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.lan-port{display:flex;align-items:center;justify-content:space-between;padding:12px;border:1px solid var(--border);border-radius:8px;font-size:12px}.lan-time{margin-top:10px;font-size:10px}#onu-lan{font-size:12px;color:#70849b}dialog{max-height:90vh;overflow-y:auto}

button.danger{color:#b64646;border-color:#f1cdcd;background:#fff5f5}button.danger:hover{background:#ffe8e8}.pending-button{margin:12px 0}.operation-notice{margin-top:20px;padding:12px;background:#f4f7fc;border-radius:7px}.operation-list article{padding:14px 0;border-bottom:1px solid var(--border);font-size:12px}.operation-list small{color:#91a0b2;font-size:10px}#provision-form input{min-width:0}

/* Tipografia e movimento da área de trabalho */
.main button{font-size:14px}.content h1{font-size:30px}.content p{font-size:14px}.panel-title{font-size:16px}.panel-head p{font-size:12px}.stat-label{font-size:14px}.stat-foot{font-size:12px}.table-tools input,.table-tools select,.panel-head select{font-size:13px}th{font-size:12px}td,td strong{font-size:13px}td small{font-size:11px}.table-end{font-size:12px}.event{font-size:13px}.event p{font-size:12px}.event time{font-size:11px}.empty{font-size:14px}.footer{font-size:11px}.link{font-size:12px}.detail-grid div{font-size:14px}.detail-grid small,.lan-time,.operation-list small{font-size:11px}.operation-list article{font-size:13px}.content{animation:page-enter .28s ease-out}.panel,.stat,button{transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease,border-color .18s ease}.nav button{transition:background-color .18s ease,color .18s ease,transform .18s ease}.nav button.active{transform:translateX(3px)}tbody tr{transition:background-color .16s ease}tbody tr:hover{background:#f7faff}.stat:hover{transform:translateY(-2px);box-shadow:0 10px 28px #24456d12}button:active{transform:scale(.98)}dialog[open]{animation:dialog-enter .22s ease-out}dialog[open]::backdrop{animation:backdrop-in .2s ease-out}#toast.visible{animation:toast-enter .22s ease-out}
@keyframes page-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes dialog-enter{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}@keyframes backdrop-in{from{opacity:0}to{opacity:1}}@keyframes toast-enter{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
@media(max-width:600px){.content h1{font-size:27px}.main button{font-size:13px}th{font-size:11px}td,td strong{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

.form-help{font-size:12px;margin:7px 0 2px}.snmp-group[hidden]{display:none!important}.snmp-group small{display:block;color:#84928b;font-size:11px;margin-top:6px}.snmp-details{margin-top:24px;border-top:1px solid var(--border);padding-top:18px}.snmp-details .detail-grid{margin-top:16px}.snmp-details .detail-grid>div{overflow-wrap:anywhere}.snmp-error{color:#a56435!important;margin-top:9px!important}
.dialog-details{width:min(1040px,94vw);max-height:90vh}.interface-heading{display:flex;align-items:end;justify-content:space-between;gap:15px;margin-top:24px;margin-bottom:10px}.interface-heading small{color:#84928b;font-size:11px}.interface-table{border:1px solid var(--border);border-radius:9px;max-height:340px}.interface-table th,.interface-table td{padding:11px 13px}.interface-table td{font-variant-numeric:tabular-nums}.traffic-rx{color:#2876c7}.traffic-tx{color:#9a6427}@media(max-width:600px){.interface-heading{align-items:start;flex-direction:column}}
.dashboard-selector{display:flex;align-items:center;gap:9px;margin:0;font-size:12px;white-space:nowrap}.dashboard-selector select{min-width:210px;font-size:13px}.dashboard-traffic .traffic-summary{padding-bottom:4px}.dashboard-traffic .interface-heading,.dashboard-traffic .interface-table{margin-left:22px;margin-right:22px}.dashboard-traffic .interface-table{margin-bottom:22px}.onu-traffic{margin-top:24px;border-top:1px solid var(--border);padding-top:18px}.traffic-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:13px}.traffic-cards>div{border:1px solid var(--border);border-radius:9px;padding:13px;display:flex;flex-direction:column;gap:7px}.traffic-cards small,.traffic-cards span{font-size:11px;color:#84928b}.traffic-cards strong{font-size:16px;font-variant-numeric:tabular-nums}@media(max-width:850px){.dashboard-selector{width:100%;align-items:flex-start;flex-direction:column}.dashboard-selector select{width:100%}}@media(max-width:600px){.traffic-cards{grid-template-columns:1fr}.dashboard-traffic .interface-heading,.dashboard-traffic .interface-table{margin-left:14px;margin-right:14px}}

/* OLT Design System · linguagem operacional inspirada em painéis de rede */
:root{--blue-50:#eef7fd;--blue-100:#d9ecf9;--blue-500:#1686c9;--blue-600:#0877bd;--blue-700:#05649f;--navy-900:#17324d;--slate-25:#fbfcfd;--slate-50:#f5f7f9;--slate-100:#edf1f4;--slate-200:#d9e1e7;--slate-400:#8393a1;--slate-500:#687b8b;--slate-600:#526577;--slate-800:#263b4d;--success:#27a66b;--warning:#e6a23c;--danger:#d9534f;--surface:#fff;--page:#f3f6f8;--border:var(--slate-200);--green:var(--blue-600);--muted:var(--slate-400);--radius-sm:4px;--radius-md:6px;--shadow-card:0 1px 3px #17324d12;--shadow-popover:0 16px 45px #17324d24}
body{background:var(--page);color:var(--slate-800)}button{border-radius:var(--radius-sm);border-color:var(--slate-200);color:var(--slate-600);box-shadow:0 1px 1px #17324d0a}button:hover{background:var(--blue-50);border-color:#b7d8ed;color:var(--blue-700)}button.primary{background:var(--blue-600);border-color:var(--blue-600);box-shadow:0 2px 5px #0877bd30}button.primary:hover{background:var(--blue-700);border-color:var(--blue-700)}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #68b7e766;outline-offset:2px}
.sidebar{width:244px;padding:0;background:var(--surface);color:var(--slate-600);border-right:1px solid var(--slate-200);box-shadow:2px 0 8px #17324d08}.sidebar>.brand{height:61px;padding:0 22px;border-bottom:1px solid var(--slate-200);color:var(--slate-800);font-size:20px;letter-spacing:-.5px}.brand-mark{width:31px;height:31px;border-radius:50%;background:var(--blue-600);color:#fff}.brand-name{color:var(--slate-800)}.workspace{margin:18px 14px 14px;padding:11px 12px;border:1px solid #cfe4f2;border-radius:var(--radius-sm);background:var(--blue-50);color:var(--navy-900)}.workspace small{color:#71889a}.workspace .avatar{background:#d3eafa;color:var(--blue-700)}.nav-label{margin:20px 22px 8px;color:#98a5af;font-weight:700}.nav{padding:0 10px}.nav button{border-radius:var(--radius-sm);padding:11px 12px;color:#5d7080;font-size:13px}.nav button:hover{background:#f0f6fa;color:var(--blue-700)}.nav button.active{background:var(--blue-600);color:#fff;transform:none;box-shadow:0 2px 5px #0877bd25}.count{background:#fff0d7;color:#a36a13}.sidebar-bottom{padding:16px 14px;margin-top:auto;border-top:1px solid var(--slate-100)}.health{margin-bottom:15px;border-color:var(--slate-200);background:var(--slate-25);color:var(--slate-600)}.health small,.profile small{color:#8998a5}.profile{color:var(--slate-800)}.profile button{color:var(--slate-500)}
.main{margin-left:244px;width:calc(100% - 244px);background:var(--page)}.topbar{height:61px;padding:0 30px;border-bottom:1px solid var(--slate-200);box-shadow:0 1px 4px #17324d0c}.top-actions{gap:12px}.top-actions .avatar{background:var(--blue-50);color:var(--blue-700);border:1px solid #cfe4f2}.content{padding-top:27px}.page-heading{margin-bottom:22px}.page-heading h1{font-size:26px;color:var(--slate-800);letter-spacing:-.55px}.page-heading p{color:#7c8d9a}.panel{border-color:var(--slate-200);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.panel-head{padding:17px 20px;border-bottom:1px solid var(--slate-100)}.panel-title{color:var(--slate-800)}.stats{gap:16px}.stat{border-radius:var(--radius-md);border-color:var(--slate-200);border-left:4px solid var(--blue-600);box-shadow:var(--shadow-card);padding:18px}.stat:nth-child(2){border-left-color:var(--success)}.stat:nth-child(3){border-left-color:var(--warning)}.stat:nth-child(4){border-left-color:var(--danger)}.stat-icon{background:transparent;color:#a6b2bb}.stat:nth-child(2) .stat-icon{color:var(--success)}.stat:nth-child(3) .stat-icon{color:var(--warning)}.stat:nth-child(4) .stat-icon{color:var(--danger)}.stat-label{text-transform:uppercase;letter-spacing:.55px;font-size:11px;color:#758797}.stat-value{color:var(--slate-800);font-size:29px;margin:13px 0 9px}.stat-foot{color:#91a0ab}.search{border-radius:var(--radius-sm);background:#fff}.search:focus-within{border-color:#76b9e1;box-shadow:0 0 0 3px #1686c916}select,dialog input,dialog select,.login input{border-radius:var(--radius-sm);border-color:#cdd8e0;color:var(--slate-800)}th{background:#f7f9fa;color:#697d8e;text-transform:uppercase;letter-spacing:.35px}td{color:#5d7080}td strong{color:#294357}.status{border-radius:12px;background:#eaf7f1;color:#23885a}.status.alert{background:#fff5e5;color:#a96b14}.status.offline{background:#fceceb;color:#b94845}.demo{border-radius:10px;background:#eef3f6;color:#718393}.traffic-rx{color:#0877bd}.traffic-tx{color:#a76717}.real-donut circle:last-child{stroke:var(--blue-600)}.dot{background:var(--success)}dialog{border-radius:var(--radius-md);border-color:var(--slate-200);box-shadow:var(--shadow-popover)}dialog::backdrop{background:#13283b70}.form-section{border-color:var(--slate-200);border-radius:var(--radius-sm)}
.login{min-height:100vh;position:relative;display:grid;grid-template-columns:minmax(0,1fr);place-items:center;overflow:hidden;padding:32px;background:radial-gradient(circle at 18% 25%,#128fd34a 0 2px,transparent 3px),radial-gradient(circle at 72% 30%,#52c4ff55 0 2px,transparent 3px),radial-gradient(circle at 82% 72%,#128fd34a 0 2px,transparent 3px),linear-gradient(135deg,#0b243a,#0d4f76 56%,#0877bd)}.login::before{content:"";position:absolute;inset:0;background-image:linear-gradient(28deg,transparent 49.65%,#8dd8ff24 49.8%,#8dd8ff24 50.2%,transparent 50.35%),linear-gradient(152deg,transparent 49.65%,#8dd8ff1e 49.8%,#8dd8ff1e 50.2%,transparent 50.35%);background-size:150px 95px;opacity:.8}.login::after{content:"";position:absolute;width:760px;height:760px;border:1px solid #8bd5ff29;border-radius:50%;box-shadow:0 0 0 90px #1686c90b,0 0 0 180px #8bd5ff0a;left:-260px;bottom:-430px}.network-backdrop{position:absolute;inset:0;z-index:0}.network-backdrop i{position:absolute;width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 15px 4px #5fcdff}.network-backdrop i:nth-child(1){left:12%;top:22%}.network-backdrop i:nth-child(2){left:28%;top:38%}.network-backdrop i:nth-child(3){left:16%;top:68%}.network-backdrop i:nth-child(4){left:42%;top:18%}.network-backdrop i:nth-child(5){right:12%;top:24%}.network-backdrop i:nth-child(6){right:25%;top:45%}.network-backdrop i:nth-child(7){right:13%;top:72%}.network-backdrop i:nth-child(8){right:42%;top:80%}.login-panel{position:relative;z-index:2;width:min(440px,100%);justify-self:center;align-self:center;background:#fff;border-radius:var(--radius-md);box-shadow:0 22px 70px #06182766;overflow:hidden}.login-panel-head{padding:15px 18px;background:#f0f3f5;border-bottom:1px solid #d9e1e7}.login-panel-head .brand{padding:0;color:var(--slate-800);font-size:22px}.login-panel-body{padding:25px 28px 22px}.login-panel-body h1{font-size:22px;margin:0 0 7px;color:var(--slate-800)}.login-panel-body>p{font-size:13px;color:#788b9a}.login-panel-body form{margin-top:20px}.login-panel-body label{font-size:12px;color:#536879;margin-top:14px}.login-panel-body input{height:46px;padding:11px 13px;background:#fff;font-size:14px}.login-panel-body input:focus{border-color:#65b2df;box-shadow:0 0 0 3px #1686c918}.login-panel-body button{width:100%;height:44px;margin-top:18px;font-size:15px}.login-panel footer{padding:13px 28px;border-top:1px solid var(--slate-100);font-size:10px;letter-spacing:.8px;color:#92a0aa;text-align:center}.login-panel footer span{color:var(--blue-600)}.login-error{color:#b94845!important;min-height:18px;margin-top:10px!important}
@media(max-width:1150px){.sidebar{width:210px}.main{margin-left:210px;width:calc(100% - 210px)}}@media(max-width:600px){.sidebar{width:244px}.main{margin-left:0;width:100%}.topbar{height:57px}.login{padding:18px;background:linear-gradient(155deg,#0b243a,#0877bd)}.login-panel{width:100%}.login-panel-body{padding:23px 20px 20px}.login-panel-head{padding:14px 16px}.page-heading h1{font-size:24px}.page-heading .actions{width:100%;flex-wrap:wrap}.page-heading .actions button{flex:1;min-width:0;padding-inline:8px}.dashboard-selector{flex:1 0 100%}.content{padding-top:20px}}

/* Smart Operations theme: dark network canvas + horizontal desktop navigation */
:root{--ops-canvas:#07172d;--ops-canvas-deep:#041124;--ops-nav:#07182f;--ops-panel:#101e34;--ops-panel-head:#202e45;--ops-control:#17283f;--ops-line:#2b3b54;--ops-text:#e7eef8;--ops-muted:#9aabc0;--ops-blue:#087fc3;--ops-green:#18a95f;--ops-gray:#4a4e56;--ops-orange:#ee9d19}
.shell{background:radial-gradient(circle at 10% 4%,#123c6645 0,transparent 26%),linear-gradient(135deg,var(--ops-canvas-deep),var(--ops-canvas) 52%,#09213d);color:var(--ops-text)}
.main{background:transparent}.content{max-width:1380px;padding:28px 34px 32px}.page-heading h1{color:#fff}.page-heading p,.panel-head p,p{color:var(--ops-muted)}
.panel{background:var(--ops-panel);border-color:var(--ops-line);box-shadow:0 8px 24px #020b1880}.panel-head{background:var(--ops-panel-head);border-color:var(--ops-line)}.panel-title{color:#fff}.panel-head svg{color:#a9bdd4}
.stats{gap:18px}.stat{min-height:134px;padding:20px 20px 0;border:0;border-radius:4px;background:var(--ops-blue);color:#fff;box-shadow:0 8px 22px #020b186b;overflow:hidden}.stat:nth-child(2){background:var(--ops-green)}.stat:nth-child(3){background:var(--ops-gray)}.stat:nth-child(4){background:var(--ops-orange)}.stat:hover{box-shadow:0 12px 30px #020b1899}.stat-label{color:#fff;text-transform:none;font-size:14px;letter-spacing:0}.stat-value{color:#fff;font-size:36px;margin:11px 0 12px}.stat-icon,.stat:nth-child(2) .stat-icon,.stat:nth-child(3) .stat-icon,.stat:nth-child(4) .stat-icon{top:19px;right:18px;width:38px;height:38px;background:#ffffff18;color:#fff}.stat-foot{margin:0 -20px;padding:9px 20px;background:#00000024;color:#fff;font-size:11px}
.traffic-summary{padding-top:18px;color:var(--ops-muted)}.traffic-summary strong{color:#fff}.availability-footer{border-color:var(--ops-line);color:var(--ops-muted)}.real-donut>div strong,.legend b{color:#fff}.real-donut small,.legend{color:var(--ops-muted)}.real-donut circle:first-child{stroke:#263850}.real-donut circle:last-child{stroke:#23a6ee}.gray{background:#77869a}
.search,select{background:var(--ops-control);border-color:var(--ops-line);color:var(--ops-text)}.search input{color:var(--ops-text)}.search input::placeholder{color:#71849a}th{background:#17263b;color:#a9b9cc;border-color:var(--ops-line)}td{color:#b8c6d7;border-color:#26364d}td strong{color:#eef5ff}td small{color:#8395aa}tbody tr:hover{background:#172a43}.table-end,.empty{color:var(--ops-muted)}.pagination button,.more{background:#17283f;color:#b9c9db;border-color:var(--ops-line)}
.event{border-color:#27374e}.event strong{color:#e5eef9}.event-mark{background:#193653;color:#75bdec}.capacity-line{color:#b1c0d0}.bar{background:#26374d}.footer{color:#8092a8}.link{color:#56b9ef}.dashboard-selector{color:#b8c7d8}.interface-heading{color:#e4edf8}.interface-heading small{color:var(--ops-muted)}.interface-table,.traffic-cards>div,.lan-port{border-color:var(--ops-line)}.traffic-cards small,.traffic-cards span,#onu-lan{color:var(--ops-muted)}.traffic-cards strong,.lan-heading{color:#e9f1fb}.operation-notice{background:#17283f}.operation-list article,.lan-section,.onu-traffic,.snmp-details{border-color:var(--ops-line)}
dialog{background:var(--ops-panel);color:var(--ops-text);border-color:var(--ops-line)}dialog h2{color:#fff}dialog label{color:#b8c7d8}dialog input,dialog select{background:var(--ops-control);border-color:#354963;color:#eef5ff}dialog input:disabled{background:#26364b;color:#8294a9}.form-section{border-color:var(--ops-line)}.form-section legend{color:#78c5ef}.optional,.form-help,.snmp-group small{color:var(--ops-muted)}dialog::backdrop{background:#020817bd}
#toast{background:#1387c8}.status{background:#163b31;color:#62dda1}.status.alert{background:#49371d;color:#ffc86a}.status.offline{background:#49282c;color:#ff8f96}.vendor{background:#29384e;color:#b9c7d8}.device-icon{background:#192a42;border-color:#30425b;color:#8aa8c8}
@media(min-width:1101px){.sidebar{inset:0 0 auto 0;width:100%;height:64px;padding:0 max(24px,calc((100vw - 1380px)/2));display:flex;flex-direction:row;align-items:center;background:var(--ops-nav);border:0;border-bottom:1px solid #29405e;box-shadow:0 4px 18px #020a1680}.sidebar>.brand{height:64px;padding:0 21px 0 0;border:0;border-right:1px solid #29405e;color:#fff;font-size:19px}.sidebar .brand-name{color:#fff}.sidebar .brand-mark{background:#0789d0}.workspace,.nav-label,.health{display:none}.nav{display:flex;align-items:stretch;height:64px;padding:0 10px}.nav button{width:auto;height:64px;margin:0;padding:0 10px;border-radius:0;color:#aebed0;font-size:12px;white-space:nowrap}.nav button:hover{background:#102c4a;color:#fff}.nav button.active{background:#0b6da8;color:#fff;box-shadow:inset 0 -3px #59c6ff}.sidebar-bottom{display:flex;align-items:center;margin:0 0 0 auto;padding:0;border:0}.profile{height:64px;padding-left:14px;border-left:1px solid #29405e;color:#e8f0fa}.profile small{color:#8fa4bb}.profile button{color:#b0c1d4}.main{margin-left:0;width:100%;padding-top:64px}.topbar{display:none}}
@media(max-width:1100px){.sidebar{inset:0 auto 0 0;width:260px;height:100vh;padding:0;display:flex;flex-direction:column;background:var(--ops-nav);border-right:1px solid #29405e;transform:translateX(-100%);transition:transform .2s ease}.sidebar.open{transform:translateX(0);box-shadow:0 0 0 100vmax #020817a8}.sidebar>.brand{height:62px;padding:0 20px;border-bottom:1px solid #29405e;color:#fff}.sidebar .brand-name{color:#fff}.workspace{display:flex;margin:16px 14px 10px;background:#102b49;border-color:#294969;color:#e8f0fa}.workspace small{color:#8fa6c0}.nav-label{display:block;color:#718aa6}.nav{display:block;padding:0 10px;overflow-y:auto}.nav button{width:100%;height:auto;margin:2px 0;padding:11px 13px;color:#aebed0}.nav button:hover{background:#102c4a;color:#fff}.nav button.active{background:#0b6da8;color:#fff}.sidebar-bottom{display:block;margin-top:auto;padding:14px;border-top:1px solid #29405e}.health{display:block;background:#102b49;border-color:#294969;color:#c9d7e7}.profile{color:#e8f0fa}.main{margin-left:0;width:100%;padding-top:0}.topbar{display:flex;height:62px;background:var(--ops-nav);border-color:#29405e;color:#fff}.topbar button{background:transparent;color:#c5d4e4;border:0}.mobile-menu{display:inline-flex}.content{padding:24px 20px 30px}}
@media(max-width:600px){.login{grid-template-columns:minmax(0,1fr);place-items:center}.stats{grid-template-columns:1fr 1fr}.stat{min-height:126px}.stat-value{font-size:32px}.content{padding:20px 14px 26px}.panel-head{padding:15px}.traffic-summary{overflow-x:auto;padding-inline:15px}.traffic-summary>div{min-width:112px}.footer{padding-bottom:10px}}

/* Theme switcher */
.theme-toggle{width:36px;height:36px;padding:0;border-radius:50%;flex:0 0 auto}.profile .theme-toggle{margin-left:auto}.profile .theme-toggle+button{margin-left:0}.top-actions .theme-toggle{background:#122b48;color:#ffd36b;border:1px solid #2a4767}.top-actions .theme-toggle:hover{background:#193a5e}.theme-toggle svg{width:18px;height:18px}
html[data-theme="light"]{--ops-canvas:#f3f6f8;--ops-canvas-deep:#edf2f6;--ops-nav:#fff;--ops-panel:#fff;--ops-panel-head:#f7f9fb;--ops-control:#fff;--ops-line:#d6e0e8;--ops-text:#263b4d;--ops-muted:#718495;color-scheme:light}
html[data-theme="dark"]{color-scheme:dark}
html[data-theme="light"] body{background:#f3f6f8;color:#263b4d}
html[data-theme="light"] .shell{background:linear-gradient(145deg,#edf3f7,#f8fafb 58%,#edf4f8);color:#263b4d}
html[data-theme="light"] .page-heading h1,html[data-theme="light"] .panel-title,html[data-theme="light"] .real-donut>div strong,html[data-theme="light"] .legend b,html[data-theme="light"] td strong,html[data-theme="light"] .traffic-cards strong,html[data-theme="light"] .lan-heading,html[data-theme="light"] .interface-heading,html[data-theme="light"] dialog h2{color:#263b4d}
html[data-theme="light"] .panel{box-shadow:0 4px 16px #17324d12}
html[data-theme="light"] .panel-head{background:#f7f9fb}
html[data-theme="light"] .panel-head svg{color:#70859a}
html[data-theme="light"] .real-donut circle:first-child{stroke:#dce5ec}
html[data-theme="light"] th{background:#eef3f7;color:#5c7183}
html[data-theme="light"] td{color:#53697b;border-color:#e3e9ee}
html[data-theme="light"] td small{color:#8495a3}
html[data-theme="light"] tbody tr:hover{background:#f2f7fa}
html[data-theme="light"] .pagination button,html[data-theme="light"] .more{background:#f7f9fb;color:#526b7f;border-color:#d6e0e8}
html[data-theme="light"] .event{border-color:#e2e8ed}
html[data-theme="light"] .event strong{color:#344b5e}
html[data-theme="light"] .event-mark{background:#e8f3fa;color:#307fae}
html[data-theme="light"] .bar{background:#e4ebf0}
html[data-theme="light"] .interface-table,html[data-theme="light"] .traffic-cards>div,html[data-theme="light"] .lan-port,html[data-theme="light"] .operation-list article,html[data-theme="light"] .lan-section,html[data-theme="light"] .onu-traffic,html[data-theme="light"] .snmp-details{border-color:#d6e0e8}
html[data-theme="light"] .operation-notice{background:#eef4f7}
html[data-theme="light"] dialog{background:#fff;color:#263b4d;box-shadow:0 18px 60px #17324d30}
html[data-theme="light"] dialog label{color:#53697b}
html[data-theme="light"] dialog input,html[data-theme="light"] dialog select{background:#fff;border-color:#cbd7e0;color:#263b4d}
html[data-theme="light"] dialog input:disabled{background:#eef2f5;color:#718495}
html[data-theme="light"] .form-section{border-color:#d6e0e8}
html[data-theme="light"] .form-section legend{color:#0877bd}
html[data-theme="light"] .device-icon{background:#edf4f8;border-color:#d8e3eb;color:#6384a0}
html[data-theme="light"] .vendor{background:#eef2f5;color:#5f7282}
html[data-theme="light"] .top-actions .theme-toggle{background:#eef5f9;color:#314e66;border-color:#cfdae3}
html[data-theme="light"] .top-actions .theme-toggle:hover{background:#e2eef5}
@media(min-width:1101px){html[data-theme="light"] .sidebar{border-bottom-color:#d4dfe7;box-shadow:0 3px 13px #17324d16}html[data-theme="light"] .sidebar>.brand{border-right-color:#d4dfe7;color:#263b4d}html[data-theme="light"] .sidebar .brand-name{color:#263b4d}html[data-theme="light"] .nav button{color:#52697b}html[data-theme="light"] .nav button:hover{background:#eaf3f8;color:#0877bd}html[data-theme="light"] .nav button.active{background:#087fc3;color:#fff;box-shadow:inset 0 -3px #075f91}html[data-theme="light"] .profile{border-left-color:#d4dfe7;color:#263b4d}html[data-theme="light"] .profile small{color:#718495}html[data-theme="light"] .profile button{color:#52697b}}
@media(max-width:1100px){html[data-theme="light"] .sidebar{background:#fff;border-color:#d4dfe7}html[data-theme="light"] .sidebar>.brand{border-color:#d4dfe7;color:#263b4d}html[data-theme="light"] .sidebar .brand-name{color:#263b4d}html[data-theme="light"] .workspace,html[data-theme="light"] .health{background:#eef6fa;border-color:#cfe0ea;color:#314b5f}html[data-theme="light"] .workspace small,html[data-theme="light"] .profile small{color:#718495}html[data-theme="light"] .nav button{color:#52697b}html[data-theme="light"] .nav button:hover{background:#eaf3f8;color:#0877bd}html[data-theme="light"] .nav button.active{background:#087fc3;color:#fff}html[data-theme="light"] .sidebar-bottom{border-color:#d4dfe7}html[data-theme="light"] .profile{color:#263b4d}html[data-theme="light"] .topbar{background:#fff;border-color:#d4dfe7;color:#263b4d;box-shadow:0 2px 10px #17324d14}html[data-theme="light"] .topbar button{color:#52697b}}

/* Interactive operational cards and Master settings */
button.stat{display:block;width:100%;text-align:left;font-weight:400;cursor:pointer}.stat-label,.stat-value,.stat-foot{display:block}.stat:focus-visible{outline:3px solid #76cfff;outline-offset:3px}.stat:hover{filter:brightness(1.06)}.view-button{min-width:58px;padding:7px 13px;background:#087fc3;border-color:#087fc3;color:#fff}.view-button:hover{background:#056da8;color:#fff}.snmp-details .interface-heading,.snmp-details .interface-table{display:none}.master-settings form{padding:20px;max-width:650px}.master-settings form input{display:block;width:100%;padding:12px;border:1px solid var(--ops-line);border-radius:4px;background:var(--ops-control);color:var(--ops-text)}.master-settings form .actions{justify-content:flex-end;margin-top:20px}.master-settings>.event{justify-content:space-between}.master-settings>.event button{margin-left:auto}@media(max-width:600px){button.stat{min-height:126px}.master-settings>.event{align-items:flex-start;flex-direction:column}.master-settings>.event button{margin:10px 0 0}}

/* OLT health cards on the dashboard */
.sgp-contract-field{display:flex;gap:8px;align-items:stretch}.sgp-contract-field input{flex:1;min-width:0}.sgp-contract-field button{white-space:nowrap}.sgp-mapping-list{display:grid;gap:12px;margin:18px 0;max-height:50vh;overflow-y:auto}.sgp-mapping-row{display:grid;grid-template-columns:minmax(130px,1fr) minmax(170px,1.5fr) auto;align-items:end;gap:9px}.sgp-mapping-row label{margin:0}.sgp-mapping-row small{display:block;font-size:10px;margin-top:5px}.sgp-mapping-row select{min-width:0}.sgp-preview-list{display:grid;gap:0;max-height:35vh;overflow-y:auto;margin:18px 0;border:1px solid var(--ops-line)}.sgp-preview-list>div{padding:10px;border-bottom:1px solid var(--ops-line);font-size:12px}.sgp-preview-list small{display:block;margin-top:5px;color:var(--ops-muted)}.sgp-sync-counts{margin:18px 0}@media(max-width:600px){.sgp-contract-field{flex-direction:column}.sgp-mapping-row{grid-template-columns:1fr}.sgp-mapping-row button{justify-self:start}}
.olt-health-list{overflow:hidden}.olt-health-list-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 18px;background:var(--ops-panel-head);color:var(--ops-text);font-size:13px}.olt-health-list-head span{font-size:10px;color:var(--ops-muted)}.olt-health-list-rows{max-height:390px;overflow-y:auto}.olt-health-row{width:100%;min-height:57px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 17px;border:0;border-top:1px solid var(--ops-line);border-radius:0;background:var(--ops-panel);color:var(--ops-text);text-align:left;box-shadow:none}.olt-health-row:hover,.olt-health-row:focus-visible{background:var(--ops-control);color:var(--ops-text)}.olt-health-row-name,.olt-health-row-meta{display:flex;align-items:center;min-width:0}.olt-health-row-name{gap:11px}.olt-health-row-name strong{font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.olt-health-row-icon{display:flex;color:#9db5cb}.olt-health-row-icon svg{width:17px;height:17px}.olt-health-row-meta{gap:12px;flex-shrink:0}.olt-health-row-meta small{font-size:11px;color:var(--ops-muted);font-variant-numeric:tabular-nums}.olt-health-row-meta>svg{width:15px;height:15px;color:var(--ops-muted)}html[data-theme="light"] .olt-health-list-head{background:#46515f;color:#fff}html[data-theme="light"] .olt-health-list-head span{color:#d6e0e9}html[data-theme="light"] .olt-health-row{background:#fff;color:#354b5d;border-color:#dbe3e9}html[data-theme="light"] .olt-health-row:hover,html[data-theme="light"] .olt-health-row:focus-visible{background:#f1f7fa;color:#263b4d}html[data-theme="light"] .olt-health-row-meta small{color:#617586}@media(max-width:600px){.olt-health-row{gap:8px;padding:9px 12px}.olt-health-row-name{gap:7px}.olt-health-row-meta{gap:6px;max-width:45%;flex-wrap:wrap;justify-content:flex-end}.olt-health-row-meta>svg{display:none}.olt-health-row-meta small{font-size:10px}}
.olt-health{margin:0 0 24px}.olt-health-heading{display:flex;align-items:baseline;gap:12px;margin:0 0 13px}.olt-health-heading h2{font-size:17px;margin:0;color:var(--ops-text)}.olt-health-heading p{font-size:11px}.olt-health-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:16px}.olt-health-card{display:grid;grid-template-columns:170px minmax(0,1fr);min-height:205px;overflow:hidden}.olt-health-visual{background:#f5f7fa;display:grid;place-items:center;min-width:0}.olt-health-photo{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;color:#5f7282;text-decoration:none}.olt-health-photo img{display:block;width:100%;height:100%;object-fit:contain}.olt-health-photo small{position:absolute;bottom:8px;right:9px;padding:3px 5px;background:#ffffffe6;border-radius:3px;color:#4d6275;font-size:9px}.olt-health-placeholder{gap:10px}.olt-health-placeholder svg{width:55px;height:55px}.olt-health-placeholder small{position:static;background:none}.olt-health-body{padding:17px 18px;min-width:0}.olt-health-title{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.olt-health-title>div{min-width:0}.olt-health-title small{font-size:10px;color:var(--ops-muted)}.olt-health-title h2{font-size:18px;color:var(--ops-text);margin:4px 0 3px;overflow-wrap:anywhere}.olt-health-title p{font-size:11px;overflow-wrap:anywhere}.olt-health-pill{display:inline-flex;align-items:center;gap:5px;border-radius:11px;padding:4px 8px;font-size:10px;font-weight:700;white-space:nowrap;background:#35445b;color:#c6d4e4}.olt-health-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.olt-health-pill.up{background:#0e573c;color:#8ff3bb}.olt-health-pill.error{background:#6a3337;color:#ffb6b5}.olt-health-pill.stale,.olt-health-pill.pending{background:#634715;color:#ffd188}.olt-health-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:20px 0 12px}.olt-health-metrics>div{min-width:0}.olt-health-metrics dt{color:var(--ops-muted);font-size:10px;margin-bottom:7px}.olt-health-metrics dd{margin:0;color:var(--ops-text);font-size:12px;font-weight:600;overflow-wrap:anywhere}.olt-health-time{font-size:10px}.olt-health-grid>.empty{grid-column:1/-1}.olt-health-grid .panel.empty{padding:28px}
.erp-settings{margin-top:18px}.erp-settings form select{display:block;width:100%;padding:12px;border:1px solid var(--ops-line);border-radius:4px;background:var(--ops-control);color:var(--ops-text)}.erp-settings form #erp-sgp-fields{margin-top:16px}.erp-settings form #erp-sgp-fields[hidden]{display:none}.erp-hint{margin:12px 0;color:var(--ops-muted);font-size:12px}.erp-settings button:disabled{opacity:.55;cursor:not-allowed}
.onu-customer{margin:0 0 22px;padding:17px 19px;border:1px solid #285779;border-radius:10px;background:#112f48;color:#edf7ff}.onu-customer-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:11px;color:#a9d6f4}.onu-customer-source{font-weight:600;color:#8fd3ff}.onu-customer-name{display:block;margin-top:10px;font-size:19px;line-height:1.3;overflow-wrap:anywhere}.onu-customer-extra{display:flex;flex-wrap:wrap;gap:18px;margin-top:13px;font-size:11px;color:#bad0df}.onu-customer-extra>div{min-width:110px}.onu-customer-extra small{display:block;color:#91abc0;margin-bottom:4px}.onu-customer-extra strong{font-size:12px;color:#edf7ff}.onu-customer-empty{background:var(--ops-control);border-color:var(--ops-line);color:var(--ops-text)}.onu-customer-empty p{margin-top:8px;color:var(--ops-muted)}html[data-theme="light"] .onu-customer{background:#edf7fd;border-color:#c9e1ee;color:#263b4d}html[data-theme="light"] .onu-customer-heading,html[data-theme="light"] .onu-customer-source{color:#2878a9}html[data-theme="light"] .onu-customer-extra{color:#62798b}html[data-theme="light"] .onu-customer-extra small{color:#657f91}html[data-theme="light"] .onu-customer-extra strong{color:#263b4d}@media(max-width:600px){.onu-customer{padding:14px}.onu-customer-extra{gap:12px}}
.onu-customer-extra .onu-customer-address{flex-basis:100%;min-width:0}.onu-customer-address strong{line-height:1.5;overflow-wrap:anywhere}
.onu-customer-empty form{margin-top:13px}.onu-customer-empty label{margin:0 0 7px}.onu-customer-empty .sgp-contract-field input{min-width:0}.onu-customer-empty .sgp-contract-field button{white-space:nowrap}@media(max-width:600px){.onu-customer-empty .sgp-contract-field button{width:100%}}
.onu-customer-empty #sgp-auto-match{margin-top:10px;font-size:12px}.onu-customer-empty #sgp-auto-match strong{color:var(--ops-text)}
.operation-progress{text-align:center;padding:18px 4px 12px;min-width:min(420px,75vw)}.operation-progress h2{margin:17px 0 8px}.operation-progress p{font-size:13px}.operation-spinner{width:48px;height:48px;margin:auto;border:4px solid var(--ops-line);border-top-color:#37a8e5;border-radius:50%;animation:operation-spin .9s linear infinite}.operation-progress-track{height:8px;margin:23px 0 13px;background:var(--ops-control);border-radius:99px;overflow:hidden}.operation-progress-track span{display:block;width:8%;height:100%;border-radius:99px;background:linear-gradient(90deg,#1686c8,#63c5f5);transition:width .45s ease}.operation-progress-note{max-width:340px;margin:auto;color:var(--ops-muted)}@keyframes operation-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.operation-spinner{animation:none}.operation-progress-track span{transition:none}}
html[data-theme="light"] .olt-health-heading h2,html[data-theme="light"] .olt-health-title h2,html[data-theme="light"] .olt-health-metrics dd{color:#263b4d}html[data-theme="light"] .olt-health-pill{background:#e9edf1;color:#647688}html[data-theme="light"] .olt-health-pill.up{background:#e5f6ed;color:#168051}html[data-theme="light"] .olt-health-pill.error{background:#fceceb;color:#b94845}html[data-theme="light"] .olt-health-pill.stale,html[data-theme="light"] .olt-health-pill.pending{background:#fff2db;color:#9a6516}
@media(max-width:650px){.olt-health-heading{display:block}.olt-health-heading p{margin-top:5px}.olt-health-card{grid-template-columns:1fr}.olt-health-visual{height:150px}.olt-health-photo img{object-fit:contain}.olt-health-body{padding:15px}.olt-health-metrics{margin-top:15px}}


.dialog-template{width:min(640px,94vw)}.template-script-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.link-button{background:none;border:0;padding:0;font-size:12px;color:#78c5ef;cursor:pointer}.link-button:hover{text-decoration:underline}dialog textarea{width:100%;box-sizing:border-box;min-height:260px;resize:vertical;padding:10px 12px;font:13px/1.55 ui-monospace,"Cascadia Mono",Consolas,monospace;background:var(--ops-control);border:1px solid #354963;border-radius:6px;color:#eef5ff;white-space:pre;overflow-x:auto}dialog textarea:focus{outline:2px solid #93c5fd;border-color:#60a5fa}.form-help code{font:12px ui-monospace,Consolas,monospace;color:#a5d8f7}
html[data-theme="light"] dialog textarea{background:#fff;border-color:#cbd7e0;color:#263b4d}html[data-theme="light"] .link-button{color:#0877bd}html[data-theme="light"] .form-help code{color:#0b5f93}

.row-actions{white-space:nowrap}.row-actions .view-button+.view-button{margin-left:6px}.row-actions .view-button svg{width:15px;height:15px;vertical-align:-3px}
.dialog-terminal{width:min(1100px,96vw);max-height:94vh}.terminal-head{display:flex;align-items:center;gap:14px;margin-bottom:12px}.terminal-head>div{flex:1;min-width:0}.terminal-head h2{display:flex;align-items:center;gap:9px;margin:0;font-size:18px}.terminal-head h2 svg{width:20px;height:20px}.terminal-head small{color:var(--ops-muted)}.terminal-state{font-size:12px;padding:3px 10px;border-radius:12px;background:#26364b;color:#b8c7d8;white-space:nowrap}.terminal-state[data-kind=ok]{background:#0f3d2c;color:#6ee7b7}.terminal-state[data-kind=error]{background:#4a1d1d;color:#fca5a5}.terminal-box{height:min(62vh,640px);background:#0b1220;border:1px solid #243449;border-radius:6px;padding:8px;box-sizing:border-box}.terminal-box .xterm{height:100%}.terminal-note{font-size:12px;color:var(--ops-muted);margin:10px 0 0}
@media(max-width:600px){.terminal-head{flex-wrap:wrap}.terminal-box{height:60vh}}
html[data-theme="light"] .terminal-state{background:#e8eef4;color:#3b5163}html[data-theme="light"] .terminal-state[data-kind=ok]{background:#dcfce7;color:#166534}html[data-theme="light"] .terminal-state[data-kind=error]{background:#fee2e2;color:#991b1b}

/* Design system (referência de painel operacional): KPIs com detalhamento, filtros rotulados, sinal RX, ficha da ONU e blocos por OLT */
:root{--kpi-blue:#0064c8;--kpi-green:#15803d;--kpi-gray:#4b5563;--kpi-amber:#b45309;--sig-good:#22c55e;--sig-warn:#f59e0b;--sig-low:#ef4444;--sig-off:#64748b;--seg-fill:rgba(255,255,255,.06);--seg-line:rgba(255,255,255,.14);--seg-on:rgba(29,139,255,.22);--seg-on-line:rgba(96,165,250,.6)}
html[data-theme="light"]{--sig-good:#15803d;--sig-warn:#b45309;--sig-low:#c81e1e;--sig-off:#64748b;--seg-fill:#fff;--seg-line:#cbd7e0;--seg-on:#e6f1fb;--seg-on-line:#0877bd}
.table-scroll,.onu-sheet-status,.signal-indicator{position:relative}
.sr-only{position:absolute;left:0;top:0;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.content .kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0}
.content .kpi{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:0;border:0;border-radius:10px;overflow:hidden;text-align:left;color:#fff;font-weight:400;box-shadow:0 4px 16px rgba(0,0,0,.28);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}
.content .kpi:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.32)}
.content .kpi:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}
.content .kpi-blue{background:var(--kpi-blue)}.content .kpi-green{background:var(--kpi-green)}.content .kpi-gray{background:var(--kpi-gray)}.content .kpi-amber{background:var(--kpi-amber)}
.kpi-main{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;min-height:96px}
.kpi-icon svg{width:46px;height:46px;stroke:#fff;stroke-width:1.6;opacity:.9}
.kpi-figure{display:flex;flex-direction:column;align-items:flex-end;text-align:right;min-width:0}
.kpi-value{font-size:40px;line-height:1.1;font-weight:500;letter-spacing:-.5px}
.kpi-label{font-size:14px;font-weight:600}
.kpi-foot{display:flex;justify-content:space-between;gap:8px;padding:10px 18px;background:rgba(0,0,0,.22);font-size:12.5px;color:rgba(255,255,255,.92)}
.kpi-foot span:last-child{text-align:right}
.content .kpi-time{margin:8px 0 22px;text-align:right;font-size:12px;color:var(--ops-muted)}
@media(max-width:1100px){.content .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.content .kpis{grid-template-columns:minmax(0,1fr);gap:10px}.kpi-main{min-height:76px;padding:12px 14px}.kpi-icon svg{width:34px;height:34px}.kpi-value{font-size:32px}.kpi-foot{padding:8px 14px;font-size:12px}}

.filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px 18px;padding:16px 20px}
.filter-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.filter-field label,.filter-label{font-size:12px;font-weight:700;color:#cbd5e1;letter-spacing:.2px}
html[data-theme="light"] .filter-field label,html[data-theme="light"] .filter-label{color:#3b5163}
.filter-search{flex:1 1 260px}.filter-search .search{width:100%;box-sizing:border-box}
.filter-field select{min-width:190px}
.segments{display:flex;flex-wrap:wrap;gap:6px}
.content .segment{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:6px 12px;border:1px solid var(--seg-line);border-radius:6px;background:var(--seg-fill);color:var(--ops-text);font-size:13px;font-weight:500}
.content .segment b{font-weight:600;font-size:12px;color:var(--ops-muted)}
.content .segment.selected{background:var(--seg-on);border-color:var(--seg-on-line);box-shadow:inset 0 -2px 0 var(--seg-on-line)}
.content .segment.selected b{color:var(--ops-text)}
.segment-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.segment-dot.online,.segment-dot.good{background:var(--sig-good)}.segment-dot.offline{background:var(--sig-off)}.segment-dot.warn{background:var(--sig-warn)}.segment-dot.low{background:var(--sig-low)}
.result-bar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 16px;padding:10px 20px;border-top:1px solid var(--ops-line);border-bottom:1px solid var(--ops-line);font-size:13px;color:var(--ops-muted)}
.result-bar b{color:var(--ops-text)}
.provision-filters .result-bar{border-bottom:0}

.content .data-table td{vertical-align:middle;font-size:13.5px}
.content .data-table td small{font-size:12px;margin-top:3px}
.data-table code,.data-sheet code,.mac-strong{font:13px/1.3 ui-monospace,"Cascadia Mono",Consolas,monospace;color:var(--ops-text);background:none;padding:0}
.mac-strong{font-weight:600}
.data-table .col-num,.data-table .col-action{text-align:right}
.muted-value{color:var(--ops-muted);font-style:italic}
.onu-state{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;white-space:nowrap}
.onu-state-mark{width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 3px rgba(34,197,94,.18);box-sizing:border-box}
.onu-state.online{color:var(--sig-good)}.onu-state.online .onu-state-mark{background:var(--sig-good)}
.onu-state.offline{color:#94a3b8}.onu-state.offline .onu-state-mark{background:transparent;border:2px solid var(--sig-off);box-shadow:none}
html[data-theme="light"] .onu-state.offline{color:#526577}
.signal-indicator{display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap;font-size:13.5px;color:var(--ops-text)}
.signal-indicator svg{width:18px;height:17px;align-self:center}
.signal-indicator rect{fill:var(--seg-line)}
.signal-indicator.good rect.on{fill:var(--sig-good)}.signal-indicator.warn rect.on{fill:var(--sig-warn)}.signal-indicator.low rect.on{fill:var(--sig-low)}
.signal-indicator.low .signal-value{color:var(--sig-low);font-weight:600}
.signal-indicator.warn .signal-value{color:var(--sig-warn);font-weight:600}
.signal-indicator small{font-size:11.5px;color:var(--ops-muted)}
.type-tag{display:inline-block;padding:3px 8px;border-radius:4px;background:rgba(56,189,248,.14);color:#bae6fd;font-size:12px;font-weight:600}
html[data-theme="light"] .type-tag{background:#e6f1fb;color:#0b5f93}
.content .view-button{min-height:32px}

dialog .onu-sheet-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px 20px;margin-bottom:16px}
dialog .onu-sheet-head small{display:block;color:var(--ops-muted);font-size:12px;margin-bottom:4px}
dialog .onu-sheet-head h2{margin:0}
.onu-sheet-status{display:flex;align-items:center;gap:16px;padding:8px 12px;border:1px solid var(--ops-line);border-radius:8px}
.sheet-section{margin:18px 0}
.sheet-section h3{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--ops-muted);margin:0 0 10px}
.data-sheet{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px;margin:0}
.data-sheet>div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:12px;padding:8px 0;border-bottom:1px solid var(--ops-line)}
.data-sheet dt{font-size:13px;font-weight:700;color:#cbd5e1;text-align:right}
html[data-theme="light"] .data-sheet dt{color:#3b5163}
.data-sheet dd{margin:0;font-size:13.5px;color:var(--ops-text);overflow-wrap:anywhere}
.sheet-note{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:10px;font-size:11px;font-weight:600;background:rgba(255,255,255,.08);color:var(--ops-muted)}
.sheet-note.warn{background:rgba(245,158,11,.15);color:#fcd34d}
html[data-theme="light"] .sheet-note{background:#eef2f5}
html[data-theme="light"] .sheet-note.warn{background:#fef3c7;color:#92400e}
.danger-zone{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;margin-top:22px;padding:14px 16px;border:1px solid rgba(239,68,68,.35);border-radius:8px;background:rgba(239,68,68,.08)}
.danger-zone strong{display:flex;align-items:center;gap:8px;color:#fca5a5;font-size:14px}
.danger-zone strong svg{width:18px;height:18px}
.danger-zone p{margin:4px 0 0;font-size:12.5px;color:var(--ops-muted)}
html[data-theme="light"] .danger-zone{background:#fef2f2;border-color:#fecaca}
html[data-theme="light"] .danger-zone strong{color:#991b1b}
dialog .danger-zone button.danger{background:#b91c1c;border-color:#b91c1c;color:#fff}
@media(max-width:700px){.data-sheet{grid-template-columns:minmax(0,1fr)}.data-sheet>div{grid-template-columns:104px minmax(0,1fr)}}

.olt-group{margin-top:18px;border:1px solid var(--ops-line);border-radius:10px;background:rgba(15,26,46,.55);overflow:hidden}
html[data-theme="light"] .olt-group{background:#fff;box-shadow:0 4px 16px #17324d12}
.olt-group-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:16px 20px 12px}
.olt-group-head h2{display:flex;align-items:center;gap:9px;margin:0;font-size:18px;font-weight:600;color:var(--ops-text)}
.olt-group-head h2 svg{width:20px;height:20px;color:var(--ops-muted)}
.olt-group-head p{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0 0;font-size:12.5px;color:var(--ops-muted)}
.olt-group-count{font-size:13px;color:var(--ops-muted)}
.olt-group-count b{font-size:22px;color:var(--ops-text);margin-right:4px}
.olt-group-empty{margin:0;padding:14px 20px 18px;font-size:13px;color:var(--ops-muted)}

.olt-health-photo{margin:0}.olt-health-photo img{width:100%;height:100%}.olt-health-photo figcaption{position:static}

.footer-version{font-variant-numeric:tabular-nums;opacity:.85}

/* Login: painel de marca com topologia PON + formulário que segue o tema */
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);background:var(--ops-canvas);color:var(--ops-text)}
.auth-side{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:32px;padding:40px 56px;overflow:hidden;color:#e2e8f0;background:linear-gradient(140deg,#06162f 0%,#071b3d 55%,#031022 100%)}
.auth-side::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 78% 22%,rgba(29,139,255,.22),transparent 34%),radial-gradient(circle at 12% 88%,rgba(0,108,255,.16),transparent 32%);pointer-events:none}
.auth-side>*{position:relative}
.auth-side .brand{padding:0;color:#fff;font-size:22px}
.auth-side-body{max-width:520px}
.auth-side-body h1{margin:0;font-size:36px;line-height:1.15;letter-spacing:-.6px;color:#fff;font-weight:700}
.auth-side-body>p{margin:14px 0 0;font-size:16px;line-height:1.55;color:#a9bdd4;max-width:440px}
.auth-art{display:block;width:100%;max-width:440px;height:auto;margin:28px 0 20px}
.auth-art-lines path{fill:none;stroke:rgba(140,200,255,.28);stroke-width:2}
.auth-art-pulse path{fill:none;stroke:#5fb8ff;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:14 190;stroke-dashoffset:204;animation:auth-pulse 3.2s linear infinite}
.auth-art-pulse .p1{animation-delay:.25s}.auth-art-pulse .p2{animation-delay:.5s}.auth-art-pulse .p3{animation-delay:.75s}.auth-art-pulse .p4{animation:none;stroke:none}.auth-art-pulse .p5{animation-delay:1.1s}
@keyframes auth-pulse{to{stroke-dashoffset:0}}
.auth-art-olt{fill:#0e2748;stroke:#5fb8ff;stroke-width:2}
.auth-art-splitter{fill:#0e2748;stroke:#5fb8ff;stroke-width:2}
.auth-art-port{fill:none;stroke:#8cc8ff;stroke-width:2;stroke-linecap:round}
.auth-art-onu rect{fill:#0e2748;stroke:rgba(140,200,255,.55);stroke-width:1.5}
.auth-art-onu circle{fill:#22c55e}
.auth-art-onu.off rect{stroke:rgba(148,163,184,.4)}
.auth-art-onu.off circle{fill:#64748b}
.auth-art text{fill:#8fa7c0;font-size:12px;font-weight:600;letter-spacing:.4px}
.auth-facts{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.auth-facts li{display:flex;align-items:center;gap:12px;font-size:14.5px;color:#d5e2f0}
.auth-facts svg{flex:none;width:34px;height:34px;padding:8px;box-sizing:border-box;border-radius:9px;background:rgba(95,184,255,.12);stroke:#8cc8ff;stroke-width:2}
.auth-side-foot{margin:0;font-size:13px;color:#7f97b0}
.auth-main{display:flex;flex-direction:column;justify-content:space-between;align-items:center;gap:24px;padding:28px 32px}
.auth-main-top{align-self:stretch;display:flex;justify-content:flex-end;align-items:center}
.auth-mobile-brand{display:none}
.auth-card{width:min(400px,100%)}
.auth-card h2{margin:0;font-size:30px;letter-spacing:-.4px;color:var(--ops-text)}
.auth-lead{margin:8px 0 28px;font-size:15px;color:var(--ops-muted)}
.auth-card label{display:block;margin:18px 0 7px;font-size:13px;font-weight:600;color:var(--ops-text)}
.auth-field{position:relative;display:flex;align-items:center}
.auth-field>svg{position:absolute;left:14px;width:18px;height:18px;stroke:var(--ops-muted);stroke-width:2;pointer-events:none}
.auth .auth-field input{width:100%;height:50px;margin:0;padding:0 48px 0 44px;box-sizing:border-box;border:1px solid var(--ops-line);border-radius:8px;background:var(--ops-control);color:var(--ops-text);font-size:15px}
.auth .auth-field input::placeholder{color:#7f8fa3}
.auth .auth-field input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.28)}
.auth .auth-reveal{position:absolute;right:6px;width:38px;height:38px;display:grid;place-items:center;padding:0;border:0;border-radius:6px;background:transparent;color:var(--ops-muted);min-height:0}
.auth .auth-reveal:hover{background:rgba(148,163,184,.14);color:var(--ops-text)}
.auth .auth-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:1px}
.auth-reveal svg{width:18px;height:18px;stroke:currentColor;stroke-width:2}
.auth-caps{display:flex;align-items:center;gap:7px;margin:9px 0 0;font-size:13px;color:#fcd34d}
.auth-caps svg{width:15px;height:15px;stroke:currentColor;stroke-width:2}
.auth .auth-error{margin:12px 0 0!important;min-height:0;font-size:13.5px;color:#fca5a5!important}
.auth .auth-error:not(:empty){padding:10px 12px;border:1px solid rgba(239,68,68,.35);border-radius:8px;background:rgba(239,68,68,.1)}
.auth .auth-submit{width:100%;height:50px;margin-top:22px;display:flex;align-items:center;justify-content:center;gap:10px;border-radius:8px;font-size:15.5px;font-weight:700;background:#0064c8;border-color:#0064c8;color:#fff}
.auth .auth-submit:hover:not(:disabled){background:#0054a9;border-color:#0054a9}
.auth .auth-submit:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}
.auth-submit svg{width:18px;height:18px;stroke:currentColor;stroke-width:2.2}
.auth-submit.is-loading svg{display:none}
.auth-submit.is-loading::before{content:"";width:16px;height:16px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:auth-spin .8s linear infinite}
@keyframes auth-spin{to{transform:rotate(360deg)}}
.auth-foot{margin:0;font-size:12.5px;color:var(--ops-muted);text-align:center}
html[data-theme="light"] .auth{background:#f3f6f8}
html[data-theme="light"] .auth .auth-field input{background:#fff;border-color:#cbd7e0;color:#263b4d}
html[data-theme="light"] .auth .auth-field input::placeholder{color:#8a9aa8}
html[data-theme="light"] .auth-caps{color:#92400e}
html[data-theme="light"] .auth .auth-error{color:#991b1b!important}
html[data-theme="light"] .auth .auth-error:not(:empty){background:#fef2f2;border-color:#fecaca}
@media(prefers-reduced-motion:reduce){.auth-art-pulse path{animation:none;stroke:none}.auth-submit.is-loading::before{animation:none}}
@media(max-width:960px){.auth{grid-template-columns:minmax(0,1fr)}.auth-side{display:none}.auth-main{justify-content:flex-start;padding:18px 18px 22px}.auth-main-top{justify-content:space-between}.auth-mobile-brand{display:block}.auth-mobile-brand .brand{padding:0;font-size:20px;color:var(--ops-text)}.auth-card{margin:auto 0}}
@media(max-width:600px){.auth-card h2{font-size:26px}.auth-lead{margin-bottom:22px}}
.auth .auth-caps[hidden]{display:none}
.auth-side .brand-name{color:#fff}
.auth-mobile-brand .brand-name{color:var(--ops-text)}

.auth-side{justify-content:flex-start}.auth-side-body{margin:auto 0}.auth-side-body h1{font-size:32px}.auth-side-body>p{margin-top:8px}.auth-card h2{margin-bottom:24px}

/* Projetos FTTH: mapa em tela cheia, painel de itens à esquerda */
/* Ocupa a altura da janela: quem desenha a rede quer mapa, não margem. O
   desconto cobre a navegação fixa, o respiro do content e o rodapé. */
.ftth-screen{display:flex;flex-direction:column;gap:0;margin:-4px 0 0;height:calc(100vh - 168px);min-height:520px;border:1px solid var(--ops-line);border-radius:var(--radius-md);overflow:hidden;background:var(--ops-panel);box-shadow:0 8px 24px #020b1880}
.ftth-bar{display:flex;align-items:center;gap:14px;padding:10px 14px;background:var(--ops-panel-head);border-bottom:1px solid var(--ops-line);flex-wrap:wrap}
.ftth-bar-title{display:flex;align-items:center;gap:10px;min-width:0}
.ftth-bar-title strong{display:block;font-size:15px;color:#fff;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ftth-bar-title small{display:block;font-size:11px;color:var(--ops-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ftth-back{padding:7px;border-radius:var(--radius-sm)}
.ftth-back svg{width:17px;height:17px}
.ftth-bar-tools{display:flex;align-items:center;gap:10px;flex:1;min-width:0;flex-wrap:wrap}
.ftth-bar-actions{display:flex;gap:6px;margin-left:auto}
.ftth-bar-actions button{padding:8px 11px;font-size:12px}
.ftth-tools{display:flex;gap:4px;flex-wrap:wrap}
.ftth-tool{padding:8px 10px;font-size:12px;gap:6px}
.ftth-tool svg{width:16px;height:16px}
.ftth-tool.active{background:var(--ops-blue);border-color:var(--ops-blue);color:#fff}
.ftth-tool.active:hover{background:#0b6da8;color:#fff}
.ftth-draft{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ops-text);background:#00000026;border:1px solid var(--ops-line);border-radius:var(--radius-sm);padding:5px 9px}
.ftth-draft button{padding:6px 9px;font-size:11px}
.ftth-workspace{display:grid;grid-template-columns:280px minmax(0,1fr);flex:1;min-height:0}
.ftth-side{border-right:1px solid var(--ops-line);display:flex;flex-direction:column;min-height:0;background:var(--ops-panel)}
.ftth-stage{position:relative;min-height:0}
.ftth-map{position:absolute;inset:0;background:#0b1a2e}
/* Menu do botão direito no mapa */
.ftth-menu{position:absolute;z-index:700;min-width:210px;padding:5px;display:grid;gap:1px;background:var(--ops-panel);border:1px solid var(--ops-line);border-radius:var(--radius-sm);box-shadow:0 12px 34px #0009}
.ftth-menu button{width:100%;justify-content:flex-start;gap:9px;padding:8px 10px;font-size:12px;font-weight:400;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ops-text);box-shadow:none;white-space:nowrap}
.ftth-menu button:hover{background:var(--ops-blue);color:#fff}
.ftth-menu button svg{width:15px;height:15px;flex:0 0 auto}
.ftth-menu hr{border:0;border-top:1px solid var(--ops-line);margin:4px 2px}
.ftth-measure-label span{position:absolute;left:8px;top:-9px;white-space:nowrap;background:#f2c200;color:#1a1a1a;font-size:11px;font-weight:700;padding:2px 6px;border-radius:3px;box-shadow:0 1px 4px #0006}
html[data-theme="light"] .ftth-menu button:hover{color:#fff}
/* Busca de cidade/endereço sobre o mapa */
.ftth-place{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:500;display:flex;gap:6px;width:min(420px,calc(100% - 200px))}
.ftth-place-field{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:0 11px;background:var(--ops-panel);border:1px solid var(--ops-line);border-radius:var(--radius-sm);color:var(--ops-muted);box-shadow:0 2px 10px #0006}
.ftth-place-field input{flex:1;min-width:0;border:0;background:transparent;padding:9px 0;font-size:12px;color:var(--ops-text);outline:none}
.ftth-place-field svg{width:15px;height:15px;flex:0 0 auto}
.ftth-place>button{box-shadow:0 2px 10px #0006;padding:9px 15px;font-size:12px}
.ftth-place-results{position:absolute;top:calc(100% + 6px);left:0;right:0;max-height:260px;overflow-y:auto;background:var(--ops-panel);border:1px solid var(--ops-line);border-radius:var(--radius-sm);box-shadow:0 10px 30px #0008;display:grid;gap:1px;padding:4px}
.ftth-place-results[hidden]{display:none}
.ftth-place-results button{width:100%;display:block;text-align:left;padding:8px 10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ops-text);font-weight:400;box-shadow:none}
.ftth-place-results button:hover{background:#ffffff14}
.ftth-place-results strong{display:block;font-size:12px;font-weight:600}
.ftth-place-results small{display:block;margin-top:3px;font-size:10px;color:var(--ops-muted)}
.ftth-place-msg{margin:0;padding:9px 10px;font-size:12px}
html[data-theme="light"] .ftth-place-results button:hover{background:#eef3f7}
/* Seletor de camada sobre o mapa */
.ftth-base{position:absolute;top:10px;right:10px;z-index:500;display:flex;gap:0;border-radius:var(--radius-sm);overflow:hidden;box-shadow:0 2px 10px #0006}
.ftth-base button{padding:7px 13px;font-size:12px;border-radius:0;border-right-width:0;box-shadow:none}
.ftth-base button:last-child{border-right-width:1px}
.ftth-base button.active{background:var(--ops-blue);border-color:var(--ops-blue);color:#fff}
/* Busca e árvore do painel */
.ftth-search{display:flex;align-items:center;gap:8px;margin:12px 12px 10px;padding:0 10px;border:1px solid var(--ops-line);border-radius:var(--radius-sm);background:var(--ops-control);color:var(--ops-muted)}
.ftth-search input{flex:1;min-width:0;border:0;background:transparent;padding:9px 0;font-size:12px;color:var(--ops-text);outline:none}
.ftth-search svg{width:15px;height:15px}
.ftth-tree{flex:1;overflow-y:auto;padding:0 8px 8px;min-height:0}
.ftth-branch{margin-bottom:2px}
.ftth-branch-head{display:flex;align-items:center;gap:8px;padding:6px 6px;border-radius:var(--radius-sm)}
.ftth-branch-head:hover{background:#ffffff0c}
.ftth-branch-head input{width:14px;height:14px;accent-color:var(--ops-blue);flex:0 0 auto;margin:0}
.ftth-branch-head label{display:flex;align-items:center;gap:7px;margin:0;font-size:12px;font-weight:600;color:var(--ops-text);cursor:pointer;flex:1;min-width:0}
.ftth-branch-head small{color:var(--ops-muted);font-size:11px;font-variant-numeric:tabular-nums}
.ftth-branch-items{display:grid;gap:1px;margin:1px 0 4px 14px;padding-left:10px;border-left:1px solid var(--ops-line)}
.ftth-node{width:100%;justify-content:flex-start;gap:7px;padding:5px 8px;font-size:12px;font-weight:400;background:transparent;border:0;border-radius:var(--radius-sm);color:#b8c6d7;text-align:left;box-shadow:none;white-space:nowrap;overflow:hidden}
.ftth-node:hover{background:#ffffff12;color:#fff}
.ftth-node.active{background:var(--ops-blue);color:#fff}
.ftth-node small{margin-left:auto;font-size:10px;color:var(--ops-muted);font-variant-numeric:tabular-nums}
.ftth-node.active small{color:#d8ecfa}
.ftth-kind{width:10px;height:10px;border-radius:2px;flex:0 0 auto;background:#8393a1}
.ftth-kind.poste{border-radius:50%;background:#9aa0a6}
.ftth-kind.cto{background:#15803d}
.ftth-kind.ceo{background:#0064c8}
.ftth-kind.dio{background:#b45309}
.ftth-kind.cliente{border-radius:50%;background:#7d3f98}
.ftth-kind.olt{background:#e4002b}
.ftth-kind.cabo-aereo{background:#15803d}
.ftth-kind.cabo-subterraneo{background:#b45309}
.ftth-kind.cabo-adss{background:#0064c8}
.ftth-kind.cabo-drop{background:#7d3f98}
.ftth-side-foot{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;border-top:1px solid var(--ops-line);background:var(--ops-line)}
.ftth-side-foot>div{padding:9px 10px;background:var(--ops-panel-head)}
.ftth-side-foot small{display:block;font-size:10px;color:var(--ops-muted);margin-bottom:4px}
.ftth-side-foot strong{font-size:13px;color:var(--ops-text);font-variant-numeric:tabular-nums}
.ftth-hint{padding:10px 12px;margin:0;border-top:1px solid var(--ops-line)}
.ftth-warn{color:#ee9d19}
/* Ficha do elemento e do cabo, dentro do mesmo painel */
.ftth-side-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 12px;margin:14px 0 8px;font-size:13px;color:var(--ops-text)}
.ftth-side-head .link{display:inline-flex;align-items:center;gap:5px}
.ftth-side-head .link svg{width:13px;height:13px}
.ftth-side>.ftth-side-head:first-child{margin-top:12px}
.ftth-card,.ftth-list,.ftth-tubes,.ftth-card-actions{margin-left:12px;margin-right:12px}
.ftth-card{border:1px solid var(--ops-line);border-radius:var(--radius-md);padding:12px}
.ftth-card h3{margin:0 0 5px;font-size:15px;color:var(--ops-text);overflow-wrap:anywhere}
.ftth-coords{font-size:11px;font-variant-numeric:tabular-nums}
.ftth-props{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:11px 0 0}
.ftth-props dt{font-size:10px;color:var(--ops-muted);margin-bottom:3px}
.ftth-props dd{margin:0;font-size:12px;color:var(--ops-text);overflow-wrap:anywhere}
.ftth-list{display:grid;gap:5px}
.ftth-item{width:100%;justify-content:flex-start;gap:9px;text-align:left;padding:8px 10px;font-weight:400;background:transparent;border-color:var(--ops-line);color:var(--ops-text)}
.ftth-item.static{display:flex;align-items:center;border:1px solid var(--ops-line);border-radius:var(--radius-sm);font-size:12px}
.ftth-item strong{display:block;font-size:12px;font-weight:600}
.ftth-item small{display:block;margin-top:3px;font-size:10px;color:var(--ops-muted)}
.ftth-item-mark{width:9px;height:9px;border-radius:3px;flex:0 0 auto;background:#8393a1}
.ftth-item-mark.cabo-aereo{background:#15803d}
.ftth-item-mark.cabo-subterraneo{background:#b45309}
.ftth-item-mark.cabo-adss{background:#0064c8}
.ftth-item-mark.cabo-drop{background:#7d3f98}
.ftth-item-mark.splitter{background:#0064c8;border-radius:50%}
.ftth-item-mark.dio{background:#b45309}
.ftth-item-mark.onu{border-radius:50%;background:#4a4e56}
.ftth-item-mark.onu.on{background:#18a95f}
.ftth-item-mark.onu.off{background:#d9534f}
.ftth-feed strong{color:#78c5ef}
.ftth-feed.pendente{border-style:dashed}
.ftth-feed.pendente strong{color:#ee9d19}
.ftth-side-head small{color:var(--ops-muted);font-size:11px;font-variant-numeric:tabular-nums}
.ftth-card-actions{display:flex;gap:7px;margin-top:14px;margin-bottom:14px}
.ftth-card-actions button{flex:1;font-size:12px;padding:8px 9px}
/* Fibras nas cores da ABNT */
.ftth-tubes{display:grid;gap:11px;margin-bottom:6px}
.ftth-tube-name{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--ops-muted);margin-bottom:5px}
.ftth-fibers{display:flex;flex-wrap:wrap;gap:5px}
.ftth-fiber{display:flex;flex-direction:column;align-items:center;gap:2px;width:24px}
.ftth-fiber small{font-size:9px;color:var(--ops-muted);font-variant-numeric:tabular-nums}
.ftth-dot{width:15px;height:15px;border-radius:50%;border:1px solid #ffffff55;display:block;flex:0 0 auto}
.ftth-fiber.usage-ocupada .ftth-dot{box-shadow:0 0 0 2px var(--ops-blue)}
.ftth-fiber.usage-reserva .ftth-dot{box-shadow:0 0 0 2px #ee9d19}
.ftth-fiber.usage-defeito .ftth-dot{box-shadow:0 0 0 2px #d9534f}
.ftth-fiber-name{display:flex;align-items:center;gap:8px}
.ftth-fiber-table{max-height:52vh;border:1px solid var(--ops-line);border-radius:var(--radius-sm)}
.ftth-fiber-table th,.ftth-fiber-table td{padding:8px 11px}
.ftth-fiber-table input,.ftth-fiber-table select{margin:0;padding:7px 9px;font-size:12px}
.ftth-check{display:flex;align-items:center;gap:9px}
.ftth-check input{width:16px;height:16px;accent-color:var(--ops-blue)}
.ftth-budget{border:0;border-top:1px solid var(--ops-line);padding:14px 0 0;margin:20px 0 0}
.ftth-budget legend{font-size:12px;font-weight:600;color:#78c5ef;padding-right:12px}
.ftth-budget-result{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0 12px}
.ftth-budget-result>div{border:1px solid var(--ops-line);border-radius:var(--radius-sm);padding:10px}
.ftth-budget-result small{display:block;font-size:10px;color:var(--ops-muted);margin-bottom:6px}
.ftth-budget-result strong{font-size:15px;font-variant-numeric:tabular-nums}
.ftth-budget-detail{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ftth-budget-detail li{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--ops-muted)}
.ftth-budget-detail strong{color:var(--ops-text);font-variant-numeric:tabular-nums}
.dialog-ftth{width:min(760px,94vw)}
/* Leaflet dentro do tema */
.ftth-marker svg{display:block;filter:drop-shadow(0 1px 2px #0008)}
.ftth-marker.selected svg{filter:drop-shadow(0 0 5px #59c6ff)}
.ftth-marker-name{position:absolute;left:calc(100% + 5px);top:50%;transform:translateY(-50%);white-space:nowrap;font-size:11px;font-weight:600;color:#fff;text-shadow:0 1px 2px #000,0 0 3px #000;pointer-events:none}
.ftth-map .leaflet-control-zoom{margin-left:10px;margin-bottom:10px}
.ftth-map .leaflet-control-zoom a{background:var(--ops-panel);color:var(--ops-text);border-color:var(--ops-line)}
.ftth-map .leaflet-control-zoom a:hover{background:var(--ops-control)}
.ftth-map .leaflet-control-attribution{background:#0b1a2ecc;color:#9aabc0;font-size:10px}
.ftth-map .leaflet-control-attribution a{color:#56b9ef}
html[data-theme="light"] .ftth-bar-title strong{color:var(--ops-text)}
html[data-theme="light"] .ftth-branch-head:hover,html[data-theme="light"] .ftth-node:hover{background:#eef3f7;color:#263b4d}
html[data-theme="light"] .ftth-node{color:#53697b}
html[data-theme="light"] .ftth-node.active{color:#fff}
html[data-theme="light"] .ftth-draft{background:#eef3f7}
html[data-theme="light"] .ftth-map{background:#e8eef3}
html[data-theme="light"] .ftth-map .leaflet-control-attribution{background:#ffffffcc;color:#5c7183}
html[data-theme="light"] .ftth-dot{border-color:#00000033}
html[data-theme="light"] .ftth-marker-name{color:#16283a;text-shadow:0 1px 2px #fff,0 0 3px #fff}
@media(max-width:1100px){.ftth-screen{height:calc(100vh - 130px)}.ftth-workspace{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.ftth-side{border-right:0;border-bottom:1px solid var(--ops-line);max-height:38vh}.ftth-stage{min-height:300px}.ftth-bar-actions{margin-left:0}}
@media(max-width:820px){.ftth-place{left:10px;right:10px;transform:none;width:auto;top:8px}.ftth-base{top:auto;bottom:24px;right:8px}}
@media(max-width:600px){.ftth-screen{height:calc(100vh - 120px);min-height:460px}.ftth-bar{gap:10px;padding:10px}.ftth-tool span{display:none}.ftth-tool{padding:9px}.ftth-bar-actions button span{display:none}.ftth-budget-result{grid-template-columns:repeat(2,minmax(0,1fr))}.ftth-props{grid-template-columns:1fr}.ftth-base{top:8px;right:8px}.ftth-base button{padding:6px 9px;font-size:11px}}
/* Importação de KMZ/KML: prévia dentro do diálogo, uma linha por pasta */
.ftth-import{margin-top:18px;display:grid;gap:12px;max-height:46vh;overflow-y:auto}
.ftth-import-msg{font-size:11px;color:var(--slate-500);margin:0}
.ftth-import-row{border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 14px}
.ftth-import-row.taken{opacity:.62;border-style:dashed}
.ftth-import-head{display:flex;align-items:center;gap:9px}
.ftth-import-head input[type=checkbox]{width:auto;display:inline-block;padding:0;margin:0;flex-shrink:0}
.ftth-import-head label{margin:0;font-size:13px;color:inherit}
.ftth-import-fields{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:8px;margin-top:10px}
.ftth-import-fields input,.ftth-import-fields select{margin:0;padding:8px 10px;font-size:12px}
.ftth-import-stats{font-size:11px;color:var(--slate-500);margin:10px 0 0;line-height:1.55}
.ftth-import-warn{margin-top:9px;font-size:11px}
.ftth-import-warn summary{cursor:pointer;color:var(--warning);font-weight:600}
.ftth-import-warn ul{margin:8px 0 0;padding-left:18px;color:var(--slate-500);display:grid;gap:5px}
.ftth-import-row.taken .ftth-import-msg{color:var(--danger)}
@media(max-width:600px){.ftth-import-fields{grid-template-columns:1fr}}

.ftth-map.linking,.ftth-map.linking .leaflet-interactive{cursor:crosshair}

/* Identidade no cabeçalho: nome em uma linha só, sem o perfil */
.profile{gap:10px}
.profile .avatar{color:var(--blue-700);background:#d3eafa;font-weight:700;letter-spacing:.3px}
.profile-name{min-width:0;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:600;line-height:1.3}
@media(min-width:1101px){.profile{gap:9px;padding-right:2px}.profile-name{max-width:150px;font-size:12px}}
html[data-theme="light"] .profile .avatar{color:#0b5c8e;background:#dceefa}
@media(min-width:1101px){.sidebar>.brand{flex:0 0 auto}.nav{flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.nav::-webkit-scrollbar{display:none}.sidebar-bottom{flex:0 0 auto}}
@media(min-width:1101px) and (max-width:1559px){.profile-name{display:none}.profile{padding-left:12px}}
@media(max-width:1100px){.profile-name{flex:1 1 auto;max-width:none;white-space:normal;overflow:visible;line-height:1.3}}
@media(min-width:1101px){.sidebar{padding:0 max(24px,calc((100vw - 1560px)/2))}}

/* Menu do cabo e do elemento: o nome fica no topo, como no mapa do SGP */
.ftth-menu-head{display:flex;align-items:center;gap:9px;padding:7px 10px 8px;font-size:11px;font-weight:700;letter-spacing:.2px;color:var(--ops-muted);border-bottom:1px solid var(--ops-line);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ftth-menu-head svg{width:15px;height:15px;flex:0 0 auto}
.ftth-menu button.danger{color:var(--danger)}
.ftth-menu button.danger:hover{background:var(--danger);color:#fff}

/* Vértices do traçado em edição: o cheio é ponto do cabo, o vazado cria um novo */
.ftth-vertex{border-radius:50%;background:#fff;border:3px solid #f2c200;box-shadow:0 1px 5px #0007;cursor:grab}
.ftth-vertex:active{cursor:grabbing}
.ftth-vertex:hover{background:#fdf1c8}
.ftth-vertex.ghost{border-width:2px;opacity:.6;box-shadow:0 1px 3px #0005}
.ftth-vertex.ghost:hover{opacity:1}

/* Gerenciar emendas: diagrama da caixa em tela cheia, no gesto do Vincular.
   O tema escuro é o padrão aqui, como no resto do arquivo; o claro sobrescreve. */
.dialog-emendas{width:min(1320px,96vw);max-width:96vw;padding:0;max-height:94vh;display:flex;flex-direction:column;overflow:hidden}
.ftth-splice-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 22px;border-bottom:1px solid var(--ops-line);flex:0 0 auto}
.ftth-splice-head h2{margin:0;font-size:16px;color:var(--ops-text)}
.ftth-splice-close{border:0;background:transparent;padding:6px;color:var(--ops-muted);box-shadow:none}
.ftth-splice-close:hover{background:var(--ops-control);color:var(--ops-text)}
.ftth-splice-body{display:grid;grid-template-columns:minmax(0,1fr) 96px minmax(0,1fr);gap:14px;align-items:start;padding:16px 22px;overflow-y:auto;flex:1 1 auto;min-height:0}
.ftth-splice-col{display:grid;gap:11px;min-width:0;align-content:start}
.ftth-splice-mid{position:sticky;top:0;display:flex;align-items:flex-start;justify-content:center;padding-top:34px}
.ftth-splice-svg{width:100%;height:auto;max-height:320px}
.ftth-splice-dica{font-size:10px;color:var(--ops-muted);text-align:center;line-height:1.5}
.ftth-splice-vazio{font-size:11px;color:var(--ops-muted);line-height:1.55;border:1px dashed var(--ops-line);border-radius:var(--radius-md);padding:14px;margin:0}
.ftth-splice-card{border:1px solid var(--ops-line);border-radius:var(--radius-md);background:var(--ops-control);padding:11px 12px}
.ftth-splice-card header{margin-bottom:8px}
.ftth-splice-card strong{display:block;font-size:12px;color:var(--ops-text);letter-spacing:-.1px}
.ftth-splice-card small{display:block;font-size:10px;color:var(--ops-muted);margin-top:3px}
.ftth-splice-card.splitter{border-color:#2c5f86;background:#122a41}
.ftth-tubo{display:flex;flex-wrap:wrap;gap:5px;align-items:center;padding:7px 0 1px;border-top:1px solid var(--ops-line)}
.ftth-tubo:first-of-type{border-top:0;padding-top:2px}
.ftth-tubo-nome{display:flex;align-items:center;gap:5px;font-size:9px;font-weight:700;letter-spacing:.4px;color:var(--ops-muted);width:100%;margin-bottom:4px;text-transform:uppercase}
.ftth-fiber{display:inline-flex;align-items:center;gap:5px;min-width:44px;padding:4px 9px 4px 6px;border:1px solid var(--ops-line);border-radius:20px;background:var(--ops-panel);font-size:11px;font-weight:600;color:var(--ops-text);box-shadow:none;font-variant-numeric:tabular-nums}
.ftth-fiber:hover:not(:disabled){border-color:var(--ops-blue);background:#12395c;color:#fff}
.ftth-fiber:disabled{opacity:.38;cursor:not-allowed}
.ftth-fiber.usada{border-style:dashed}
.ftth-fiber.usada .ftth-fiber-label{text-decoration:line-through}
.ftth-fiber.escolhida{border-color:#f2c200;background:#4a3a05;color:#ffe89a;box-shadow:0 0 0 3px #f2c20040;animation:ftth-pisca 1.2s ease-in-out infinite}
.ftth-fiber-dot{width:11px;height:11px;border-radius:50%;border:1px solid #ffffff40;flex:0 0 auto}
@keyframes ftth-pisca{50%{box-shadow:0 0 0 7px #f2c20015}}
.ftth-splice-tabela{border-top:1px solid var(--ops-line);max-height:29vh;overflow:auto;flex:0 0 auto}
.ftth-splice-tabela table{white-space:normal;width:100%}
.ftth-splice-tabela th{position:sticky;top:0;z-index:1;padding:8px 14px;background:var(--ops-canvas);color:var(--ops-muted)}
.ftth-splice-tabela td{padding:7px 14px;font-size:11px;color:var(--ops-text);border-color:var(--ops-line)}
.ftth-splice-perda{width:78px}
.ftth-splice-obs{width:100%;min-width:130px}
.ftth-splice-tabela input{padding:6px 9px;font-size:11px;border:1px solid var(--ops-line);border-radius:var(--radius-sm);background:var(--ops-panel);color:var(--ops-text)}
.ftth-splice-tabela input:focus{border-color:var(--ops-blue);outline:none}
.ftth-splice-tabela button.danger{padding:5px;border:0;background:transparent;color:#e2767a;box-shadow:none}
.ftth-splice-tabela button.danger:hover{background:#4a1f22;color:#ffb3b6}
.ftth-splice-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:13px 22px;border-top:1px solid var(--ops-line);flex:0 0 auto}
.ftth-splice-foot .actions{margin:0}
.ftth-splice-stats{font-size:11px;color:var(--ops-muted);font-variant-numeric:tabular-nums}
@media(max-width:900px){.ftth-splice-body{grid-template-columns:1fr}.ftth-splice-mid{display:none}}

html[data-theme="light"] .ftth-splice-head{border-color:var(--slate-200)}
html[data-theme="light"] .ftth-splice-head h2{color:#263b4d}
html[data-theme="light"] .ftth-splice-close{color:var(--slate-500)}
html[data-theme="light"] .ftth-splice-close:hover{background:var(--slate-100);color:#263b4d}
html[data-theme="light"] .ftth-splice-card{background:var(--slate-25);border-color:var(--slate-200)}
html[data-theme="light"] .ftth-splice-card strong{color:#263b4d}
html[data-theme="light"] .ftth-splice-card small,html[data-theme="light"] .ftth-tubo-nome,html[data-theme="light"] .ftth-splice-stats,html[data-theme="light"] .ftth-splice-dica,html[data-theme="light"] .ftth-splice-vazio{color:#718495}
html[data-theme="light"] .ftth-splice-card.splitter{background:#eaf4fb;border-color:#b9d8ee}
html[data-theme="light"] .ftth-tubo,html[data-theme="light"] .ftth-splice-tabela,html[data-theme="light"] .ftth-splice-foot,html[data-theme="light"] .ftth-splice-vazio{border-color:var(--slate-200)}
html[data-theme="light"] .ftth-fiber{background:#fff;border-color:var(--slate-200);color:#33495c}
html[data-theme="light"] .ftth-fiber:hover:not(:disabled){background:var(--blue-50);border-color:var(--blue-600);color:var(--blue-700)}
html[data-theme="light"] .ftth-fiber.escolhida{background:#fff3cd;border-color:#d9a400;color:#6b4c00}
html[data-theme="light"] .ftth-fiber-dot{border-color:#00000030}
html[data-theme="light"] .ftth-splice-tabela th{background:var(--slate-25);color:#718495}
html[data-theme="light"] .ftth-splice-tabela td{color:#33495c;border-color:var(--slate-200)}
html[data-theme="light"] .ftth-splice-tabela input{background:#fff;border-color:var(--slate-200);color:#263b4d}

/* Impressão: a folha que vai para o campo — sem mapa, sem botões, fundo branco */
@media print{
 body>*:not(dialog){display:none!important}
 dialog.dialog-emendas{position:static;display:block;width:auto;max-width:none;max-height:none;border:0;box-shadow:none;padding:0;background:#fff;color:#000;overflow:visible}
 dialog::backdrop{display:none}
 .ftth-splice-close,.ftth-splice-foot .actions,.ftth-splice-tabela button{display:none!important}
 .ftth-splice-head h2,.ftth-splice-card strong,.ftth-splice-tabela td{color:#000}
 .ftth-splice-card{background:#fff;border-color:#999;break-inside:avoid}
 .ftth-splice-body{overflow:visible;page-break-inside:avoid}
 .ftth-splice-tabela{max-height:none;overflow:visible}
 .ftth-splice-tabela th{background:#eee;color:#000}
 .ftth-fiber{background:#fff;border-color:#999;color:#000;opacity:1}
 .ftth-fiber:disabled{opacity:1}
 .ftth-splice-stats,.ftth-splice-card small,.ftth-tubo-nome{color:#444}
}
.danger-actions{display:flex;flex-wrap:wrap;gap:8px}.danger-actions button{display:inline-flex;align-items:center;gap:6px}.danger-actions button svg{width:15px;height:15px}
.operation-question{margin:20px 0 0;font-size:15px;font-weight:600}
