[hidden]{display:none!important}.auth-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 20% 15%,#d5ece5,transparent 55%),var(--bg)}.auth-card{max-width:450px;width:100%;padding:34px}.auth-card h1{font-size:25px;margin:25px 0 10px}.auth-card p{font-size:12px;color:var(--muted);line-height:1.7}.auth-card label{margin-top:16px}.auth-card .button{width:100%;margin-top:23px;justify-content:center}.auth-brand{font-size:22px;font-weight:750;color:var(--teal)}.auth-brand>span{color:#cba751}.auth-card .form-error{color:var(--bad)}.logout{color:#a3c0bd;font-size:11px;padding:10px 15px;margin-bottom:12px}.sidebar-bottom{border-top:1px solid #ffffff14}.sidebar nav a{min-height:34px;padding-block:8px}.sidebar nav{margin-top:10px}.nav-group-label{padding-top:15px}.workspace small{display:block;margin-top:3px;color:#88aaa5;font-size:9px}.profile small{display:block;font-size:10px;color:#88aaa5;margin-top:3px}.workspace .nav-label{text-align:left;overflow:hidden;text-overflow:ellipsis}.auth-screen input{width:100%}.status.unconfigured,.status.pending,.status.stale,.status.unknown{background:#8b9baf18;color:var(--muted)}.text-good{color:var(--good)}.text-bad{color:var(--bad)}.notice{display:flex;align-items:flex-start;gap:10px;font-size:12px;line-height:1.8;border:1px solid var(--border);background:var(--card);border-radius:10px;padding:17px 19px;margin-bottom:20px;color:var(--muted)}.notice.warning{border-color:#c89f4b80;background:#c89f4b0a}.notice strong{color:var(--ink)}.list-empty{padding:45px 25px;text-align:center;color:var(--muted);font-size:12px}.list-empty h3{font-size:17px;color:var(--ink);margin-bottom:8px}.list-empty .button{margin-top:18px}.page-tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:20px}.page-tabs a{padding:8px 13px;font-size:12px;border:1px solid var(--border);border-radius:7px}.page-tabs a.active{color:var(--teal);background:var(--teal-soft);border-color:var(--teal)}.data-table th{white-space:nowrap}.data-table td{font-size:11px;max-width:300px;overflow-wrap:anywhere}.data-table .row-actions{display:flex;gap:6px;align-items:center}.row-actions .button{font-size:10px;padding:6px 8px}.link-button{color:var(--teal);font-weight:600;text-align:left;font-size:inherit;padding:0}.link-button:hover{text-decoration:underline}.muted{color:var(--muted)}.data-table small{margin-top:5px}.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 19px;border-bottom:1px solid var(--border);flex-wrap:wrap}.table-toolbar input{max-width:310px;margin:0}.table-toolbar select{width:auto;margin:0}.table-toolbar>span{font-size:11px;color:var(--muted)}.list-title{margin:0}.editor-hint{font-size:10px;color:var(--muted);margin-top:5px;line-height:1.7}label .optional{font-weight:400;color:var(--muted)}.editor-form-error{color:var(--bad)}#editor-fields .form-grid{gap:14px}.detail-modal{width:min(960px,calc(100vw - 30px))}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin:20px 0}.detail-grid>div{padding:16px;background:var(--bg);border-radius:8px}.detail-grid small{font-size:10px;color:var(--muted);margin:0 0 8px}.detail-grid strong{font-size:18px}.detail-grid strong small{display:inline}.detail-content h3{font-size:14px;margin:20px 0 10px}.detail-modal h3{font-size:14px;margin:25px 0 12px}.detail-modal p{font-size:12px;line-height:1.8;color:var(--muted)}.detail-modal .table-wrap{margin-top:12px}.graph{width:100%;height:180px}.graph text{font-size:9px;fill:var(--muted)}.graph .series{stroke:var(--teal);fill:none;stroke-width:2}.graph .area{fill:var(--teal-soft)}.graph .gridline{stroke:var(--border);stroke-width:1}.network-canvas{width:100%;height:540px;touch-action:none;cursor:grab;background:radial-gradient(circle,var(--border) 1px,transparent 1px);background-size:20px 20px;border-radius:10px}.network-canvas:active{cursor:grabbing}.network-canvas text{fill:var(--ink);font-size:11px}.network-canvas line{stroke:var(--teal);stroke-width:2;opacity:.6}.network-canvas circle{fill:var(--card);stroke:var(--teal);stroke-width:2}.network-canvas .offline circle{stroke:var(--bad)}.network-canvas g[data-map-id]{cursor:pointer}.map-toolbar{display:flex;gap:8px;padding:14px 19px;align-items:center;flex-wrap:wrap}.map-toolbar span{font-size:11px;color:var(--muted)}.settings-card p{line-height:1.8}.provider-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.provider-grid .card{padding:25px}.provider-grid h3{margin:10px 0;font-size:16px}.provider-grid p{font-size:12px;color:var(--muted);line-height:1.9}.timeline{padding:8px 20px 20px}.timeline>div{display:flex;gap:14px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--border);font-size:11px}.timeline time{white-space:nowrap;color:var(--muted);font-size:10px}.timeline strong{font-weight:550}.timeline small{font-size:9px;color:var(--muted);display:block;margin-top:4px}.search-result{display:block;border-bottom:1px solid var(--border);padding:14px 5px;width:100%;text-align:left;font-size:12px}.search-result small{display:block;color:var(--muted);margin-top:4px}.danger{color:var(--bad)!important}.dashboard-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.service-badge{font-size:9px;border-radius:12px;background:var(--teal-soft);color:var(--good);padding:5px 8px;display:inline-flex;align-items:center;gap:5px}.service-badge:before{content:'';background:currentColor;border-radius:50%;width:5px;height:5px}.service-badge.disconnected{color:var(--warn)}.metric-card{min-height:125px}.metric-card p{line-height:1.6}.dashboard-panels{grid-template-columns:1.2fr 1fr 1fr}.stat-label{color:var(--muted);font-size:10px}.toast[hidden]{display:none}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);max-width:calc(100vw - 32px);z-index:1000;background:var(--sidebar);color:#fff;padding:13px 20px;border-radius:9px;box-shadow:0 5px 30px #0003;font-size:12px}.field-note{background:var(--bg);padding:12px;border-radius:6px;line-height:1.8;font-size:11px;margin-top:15px}.money{font-variant-numeric:tabular-nums}.button:disabled{opacity:.55;cursor:wait}.setup-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:15px}.mini-summary{display:flex;gap:20px;flex-wrap:wrap;padding:18px 20px}.mini-summary span{font-size:11px;color:var(--muted)}.mini-summary strong{color:var(--ink)}
.quick-actions .button.primary{color:var(--ink);border:1px solid var(--border);box-shadow:none}.brand-label,.brand-mark,.auth-brand{font-family:'Segoe UI',sans-serif}.page-tabs a{color:var(--muted)}.page-tabs a:hover{color:var(--teal);background:var(--teal-soft)}.toast{background:#102d30}
.port-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin-top:15px}.port-cell{padding:15px;border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;gap:8px;min-height:110px}.port-cell strong{font-size:11px}.port-cell .button{font-size:10px;padding:6px}.port-cell.occupied{background:var(--teal-soft);border-color:var(--teal)}.check-label{display:flex;align-items:center;gap:10px!important}.check-label input[type=checkbox]{width:16px;height:16px;margin:0;flex-shrink:0}.onu-selection{border:1px solid var(--border);border-radius:8px;padding:12px;margin-top:15px;max-height:300px;overflow:auto}.onu-selection legend{font-size:12px}.onu-selection .check-label{font-size:12px}.onu-selection small{margin-left:auto}.detail-modal dd{overflow-wrap:anywhere;font-size:12px;margin-bottom:15px}
@media(max-width:1250px){.dashboard-panels{grid-template-columns:1fr}.dashboard-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.auth-card{padding:25px}.dashboard-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.provider-grid,.detail-grid{grid-template-columns:1fr}.sidebar nav a{padding-block:10px}.network-canvas{height:400px}.data-table td,.data-table th{padding:12px}.dashboard-date{font-size:9px}.timeline{padding:5px 14px 15px}.timeline time{white-space:normal;max-width:90px}.dashboard-hero h1{font-size:23px}.detail-modal{padding:20px}.table-toolbar input{max-width:100%}.quick-actions .button{white-space:normal}.wallet-button{font-size:10px}.metric-value{font-size:22px}}

.router-script-source{width:100%;box-sizing:border-box;font:12px/1.65 Consolas,monospace;margin-top:10px;padding:14px;background:var(--bg);color:var(--ink);border:1px solid var(--border);border-radius:8px;resize:vertical;white-space:pre;overflow:auto}.detail-modal ol{font-size:12px;line-height:1.8;color:var(--muted);padding-left:20px}
