:root{--sidebar:260px;--bg:#07111f;--surface:#0d1a2b;--surface2:#122238;--line:#20344f;--muted:#8fa3bb;--accent:#1677ff}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top right,#102a4d 0,#07111f 38%);color:#e8f0fa;min-height:100vh}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar);position:fixed;inset:0 auto 0 0;background:rgba(7,17,31,.97);border-right:1px solid var(--line);padding:22px 16px;display:flex;flex-direction:column;z-index:1050}.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-size:1.35rem;font-weight:800;padding:0 8px 26px}.brand-mark{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,#1677ff,#42d4ff);display:inline-flex;align-items:center;justify-content:center;color:white}.sidebar-nav{gap:5px}.sidebar-nav .nav-link{color:#9fb1c8;border-radius:10px;padding:11px 13px;display:flex;gap:12px;align-items:center}.sidebar-nav .nav-link:hover,.sidebar-nav .nav-link.active{background:#132b4d;color:#fff}.nav-section{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:#60748e;padding:24px 13px 8px}.sidebar-footer{margin-top:auto}.user-mini{display:flex;gap:10px;align-items:center;margin-bottom:12px}.avatar{width:38px;height:38px;border-radius:50%;background:#1d6fd8;display:flex;align-items:center;justify-content:center;font-weight:700}.user-mini small{display:block;color:var(--muted)}.main-area{margin-left:var(--sidebar);width:calc(100% - var(--sidebar))}.topbar{height:78px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;background:rgba(7,17,31,.78);backdrop-filter:blur(12px);position:sticky;top:0;z-index:1000}.topbar-title{font-size:1.1rem;margin:0}.topbar small{color:var(--muted)}.content-area{padding:30px}.page-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:24px}.page-header h2{margin:0 0 4px;font-weight:750}.page-header p{margin:0;color:var(--muted)}.back-link{color:#8ebcff;text-decoration:none;display:inline-block;margin-bottom:8px}.metric-card,.panel,.olt-card{background:linear-gradient(145deg,rgba(18,34,56,.97),rgba(11,25,42,.97));border:1px solid var(--line);border-radius:16px;box-shadow:0 12px 30px rgba(0,0,0,.15)}.metric-card{padding:18px;min-height:132px}.metric-icon{font-size:1.45rem}.metric-value{font-size:2rem;font-weight:800;margin-top:8px}.small-value{font-size:1.1rem;word-break:break-all}.metric-label{color:var(--muted);font-size:.86rem}.panel-header{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.panel-header h3{font-size:1rem;margin:0}.panel-header a{font-size:.85rem;text-decoration:none}.panel-body{padding:20px}.chart-wrap{height:290px}.filter-bar{display:grid;grid-template-columns:minmax(240px,1fr) 190px 170px auto auto;gap:10px}.olt-card{padding:20px;height:100%}.olt-card-head,.olt-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.vendor-badge{font-size:.75rem;color:#86bbff;font-weight:700}.status-pill{font-size:.72rem;padding:5px 9px;border-radius:999px}.status-pill.active{background:rgba(25,210,130,.14);color:#4ee3a2}.status-pill.inactive{background:rgba(255,178,67,.14);color:#ffc267}.olt-card h3{font-size:1.08rem;margin:18px 0 4px}.olt-card>p{color:var(--muted);font-size:.88rem}.olt-meta{display:flex;flex-direction:column;gap:9px;color:#b8c7d9;font-size:.86rem;margin:18px 0}.olt-meta span{display:flex;gap:9px}.status-dot{width:10px;height:10px;border-radius:50%}.status-dot.online{background:#35d895;box-shadow:0 0 0 5px rgba(53,216,149,.1)}.status-dot.offline{background:#f66}.empty-state{text-align:center;border:1px dashed var(--line);border-radius:16px;padding:60px;color:var(--muted)}.empty-state i{font-size:3rem}.danger-panel{border-color:#7a2e3b}.login-body{display:grid;place-items:center;background:radial-gradient(circle at top,#183760,#07111f 50%)}.login-shell{width:min(420px,92vw)}.login-brand{text-align:center;margin-bottom:24px}.login-brand .brand-mark{width:58px;height:58px;font-size:1.6rem}.login-brand h1{margin:14px 0 3px}.login-brand p{color:var(--muted)}.login-card{background:rgba(13,26,43,.95);border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 25px 70px rgba(0,0,0,.35)}.table{--bs-table-bg:transparent;--bs-table-border-color:var(--line)}.list-group-item{border-color:var(--line)}@media(max-width:991px){.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.show{transform:translateX(0)}.main-area{margin-left:0;width:100%}.content-area{padding:20px}.filter-bar{grid-template-columns:1fr 1fr}.filter-bar .input-group{grid-column:1/-1}}@media(max-width:576px){.filter-bar{grid-template-columns:1fr}.filter-bar .input-group{grid-column:auto}.page-header{align-items:flex-start;gap:14px;flex-direction:column}.topbar{padding:0 15px}}
.metric-card.compact{min-height:118px;padding:16px}.metric-card.compact .metric-value{font-size:1.65rem}.inventory-table th{white-space:nowrap}.slot-badge{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;background:#17365e;color:#8ec1ff;font-weight:800}.inventory-status{display:inline-flex;align-items:center;gap:8px;padding:5px 9px;border-radius:999px;font-size:.74rem;font-weight:700}.inventory-status .status-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.inventory-status.ok{background:rgba(44,211,145,.12);color:#42dda0}.inventory-status.standby{background:rgba(39,145,255,.13);color:#66afff}.inventory-status.alert{background:rgba(255,177,66,.13);color:#ffc15f}code{color:#88c2ff}

/* BotIXC v1.0 - Topologia visual */
.topology-breadcrumb{--bs-breadcrumb-divider:'›';font-size:.86rem}.topology-breadcrumb a{text-decoration:none;color:#8ebcff}.topology-toolbar{display:flex;justify-content:space-between;align-items:center;gap:18px;color:var(--muted)}.topology-toolbar strong{display:block;color:#e8f0fa}.topology-toolbar small{display:block}.topology-legend{display:flex;gap:15px;font-size:.8rem}.legend-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.legend-dot.healthy{background:#35d895}.legend-dot.warning{background:#f7b84b}.legend-dot.critical{background:#f16d7a}.topology-card{display:block;height:100%;padding:18px;border-radius:16px;text-decoration:none;color:#e8f0fa;background:linear-gradient(145deg,rgba(18,34,56,.98),rgba(11,25,42,.98));border:1px solid var(--line);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;position:relative;overflow:hidden}.topology-card:before{content:'';position:absolute;inset:0 auto 0 0;width:4px;background:#35d895}.topology-card.warning:before{background:#f7b84b}.topology-card.critical:before{background:#f16d7a}.topology-card:hover{transform:translateY(-3px);border-color:#3f6590;box-shadow:0 18px 40px rgba(0,0,0,.24);color:#fff}.topology-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.topology-card h3{font-size:1.15rem;margin:4px 0 0}.topology-kicker{font-size:.68rem;letter-spacing:.1em;color:var(--muted);text-transform:uppercase}.health-ring{width:55px;height:55px;border-radius:50%;border:4px solid rgba(53,216,149,.38);display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800}.warning .health-ring{border-color:rgba(247,184,75,.45)}.critical .health-ring{border-color:rgba(241,109,122,.48)}.topology-total{display:flex;align-items:baseline;gap:7px;margin:20px 0 14px}.topology-total strong{font-size:2rem}.topology-total span{color:var(--muted)}.topology-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:.76rem}.topology-stats span{padding:7px 8px;border-radius:8px;background:rgba(255,255,255,.035);color:var(--muted)}.topology-stats b{color:#fff;margin-right:3px}.topology-stats .online{border-left:2px solid #35d895}.topology-stats .offline{border-left:2px solid #8497aa}.topology-stats .los{border-left:2px solid #f16d7a}.topology-stats .dying{border-left:2px solid #f7b84b}.topology-open{display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding-top:12px;border-top:1px solid var(--line);font-size:.8rem;color:#8ebcff}.status-filter-pills{display:flex;flex-wrap:wrap;gap:9px}.status-filter-pills a{display:flex;gap:7px;align-items:center;padding:8px 12px;border:1px solid var(--line);border-radius:999px;text-decoration:none;color:var(--muted);font-size:.82rem}.status-filter-pills a:hover,.status-filter-pills a.active{background:#17365e;color:#fff;border-color:#35669c}.status-filter-pills a.online.active{background:rgba(53,216,149,.15);border-color:#35d895}.status-filter-pills a.los.active{background:rgba(241,109,122,.15);border-color:#f16d7a}.status-filter-pills a.dying.active{background:rgba(247,184,75,.15);border-color:#f7b84b}.onu-id{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;border-radius:9px;background:#17365e;color:#a9d2ff;font-weight:800}.onu-status{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:5px 9px;font-size:.7rem;font-weight:800}.onu-status i{width:7px;height:7px;border-radius:50%;background:currentColor}.onu-status.online{color:#4ee3a2;background:rgba(53,216,149,.12)}.onu-status.offline{color:#aab6c4;background:rgba(170,182,196,.1)}.onu-status.los{color:#ff8290;background:rgba(241,109,122,.12)}.onu-status.dyinggasp{color:#ffc467;background:rgba(247,184,75,.12)}.topology-onu-table th{white-space:nowrap}.topology-summary .metric-card{min-height:110px}@media(max-width:767px){.topology-toolbar{align-items:flex-start;flex-direction:column}.topology-legend{flex-wrap:wrap}.topology-stats{grid-template-columns:1fr}.health-ring{width:48px;height:48px}}

/* BotIXC v1.1 - Topologia interativa */
.pon-occupancy{margin:0 0 14px}.pon-occupancy-head{display:flex;align-items:center;justify-content:space-between;font-size:.76rem;color:var(--muted);margin-bottom:6px}.pon-occupancy-head b{color:#dbe9f8}.pon-progress{height:7px;border-radius:99px;background:rgba(255,255,255,.06);overflow:hidden}.pon-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#35d895,#21a7ff)}.warning .pon-progress i{background:linear-gradient(90deg,#f7b84b,#ff8a42)}.critical .pon-progress i{background:linear-gradient(90deg,#f16d7a,#ff465d)}.pon-occupancy small{display:block;color:#6f849d;font-size:.68rem;margin-top:5px}.topology-search{max-width:760px}.topology-search .input-group-text{background:#0b192a;border-color:var(--line);color:#7fa2c9}.topology-search .form-control{background:#0b192a;border-color:var(--line);color:#e8f0fa}.topology-search .form-control:focus{background:#0b192a;color:#fff;border-color:#3977bd;box-shadow:0 0 0 .2rem rgba(22,119,255,.12)}


/* BotIXC v1.2 - Detalhes da ONU */
.onu-click-row{cursor:pointer;transition:background .15s ease}.onu-click-row:hover{background:rgba(22,119,255,.07)}.onu-detail-link{text-decoration:none;color:inherit}.onu-status-large{padding:9px 13px;font-size:.78rem}.onu-detail-header{align-items:center}.onu-detail-grid,.onu-empty-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.onu-detail-grid>div,.onu-empty-fields>div{padding:14px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.025)}.onu-detail-grid span,.onu-empty-fields span{display:block;color:var(--muted);font-size:.76rem;margin-bottom:5px}.onu-detail-grid strong,.onu-empty-fields strong{font-size:.96rem}.onu-empty-fields strong{color:#71869f;font-weight:600}@media(max-width:576px){.onu-detail-grid,.onu-empty-fields{grid-template-columns:1fr}}
/* Módulo 2 inventário */
.inventory-hero-actions,.inventory-quickbar{display:flex;align-items:center;gap:12px}.inventory-metric-link{text-decoration:none;color:inherit}.inventory-smart-filter{display:grid;grid-template-columns:minmax(250px,1.5fr) repeat(5,minmax(110px,.55fr));gap:10px;align-items:end}.inventory-quickbar{justify-content:space-between;border-top:1px solid var(--line);padding-top:14px}.onu-inventory-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.onu-inventory-card{display:block;text-decoration:none;color:inherit;padding:16px;border:1px solid var(--line);border-left:4px solid #35d895;border-radius:14px;background:rgba(12,27,45,.86);transition:.18s}.onu-inventory-card:hover{color:#fff;transform:translateY(-3px);border-color:#3977bd}.onu-inventory-card.offline{border-left-color:#8497aa}.onu-inventory-card.los{border-left-color:#f16d7a}.onu-inventory-card.dyinggasp{border-left-color:#f7b84b}.onu-card-head{display:flex;justify-content:space-between;gap:10px}.onu-card-head h3{margin:3px 0 10px}.onu-card-location{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}.onu-card-location span,.onu-card-state span{background:rgba(255,255,255,.035);padding:7px;border-radius:8px;font-size:.74rem}.onu-card-state{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.onu-card-state b{display:block;color:#fff;margin-top:3px}.inventory-smart-table tbody tr{cursor:pointer}.inventory-smart-table tbody tr:hover{background:rgba(22,119,255,.07)}.inventory-pagination{display:flex;justify-content:space-between;align-items:center}@media(max-width:1200px){.inventory-smart-filter{grid-template-columns:repeat(3,1fr)}.inventory-search-main{grid-column:1/-1}}@media(max-width:767px){.inventory-smart-filter{grid-template-columns:1fr 1fr}.inventory-quickbar,.inventory-hero-actions{align-items:flex-start;flex-direction:column}}
