:root{--primary: #0162e8;--primary-rgb: 1, 98, 232;--primary-soft: rgba(var(--primary-rgb), .1);--primary-hover: #0154c7;--body-bg: #ecf0fa;--surface: #ffffff;--surface-muted: #f8fafd;--border: #eae8f1;--input-border: #e9edf6;--text: #031b4e;--text-title: #242f48;--text-muted: #7987a1;--menu-text: #5b6e88;--menu-category: #2c364c;--success: #22c03c;--success-soft: rgba(34, 192, 60, .12);--warning: #fbbc0b;--warning-soft: rgba(251, 188, 11, .15);--danger: #ee335e;--danger-soft: rgba(238, 51, 94, .12);--info: #00b9ff;--info-soft: rgba(0, 185, 255, .12);--sidebar-w: 240px;--sidebar-w-collapsed: 72px;--sidebar-current: var(--sidebar-w);--header-h: 60px;--radius: .5rem;--radius-sm: .35rem;--card-shadow: -8px 12px 18px 0 #dadee8;font-family:Roboto,system-ui,sans-serif;font-size:.875rem;line-height:1.5;color:var(--text)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--body-bg)}body.layout-fixed{overflow:hidden}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:var(--primary);text-decoration:none}.login-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:var(--surface)}.login-brand{display:flex;flex-direction:column;justify-content:center;padding:3rem;background:linear-gradient(135deg,#0162e8,#004aad);color:#fff}.login-brand h2{margin:0 0 .75rem;font-size:2rem;font-weight:500}.login-brand p{margin:0;max-width:360px;opacity:.88;line-height:1.7}.login-brand .brand-mark{width:52px;height:52px;border-radius:12px;background:#ffffff26;display:grid;place-items:center;font-size:1.4rem;font-weight:700;margin-bottom:2rem}.login-panel{display:grid;place-items:center;padding:2rem;background:var(--body-bg)}.login-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--card-shadow);padding:2rem}.login-card h3{margin:0 0 .35rem;font-size:1.35rem;font-weight:500;color:var(--text-title)}.login-card .login-desc{margin:0 0 1.5rem;color:var(--text-muted)}@media (max-width: 900px){.login-page{grid-template-columns:1fr}.login-brand{display:none}}.page{--sidebar-current: var(--sidebar-w);height:100vh;overflow:hidden;background:var(--body-bg)}.page.sidebar-collapsed{--sidebar-current: var(--sidebar-w-collapsed)}.app-sidebar{position:fixed;inset-block:0;inset-inline-start:0;width:var(--sidebar-current);background:var(--surface);border-inline-end:1px solid var(--border);z-index:102;transition:width .2s ease;overflow:hidden}.main-sidebar-header{height:var(--header-h);display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border);padding:0 1rem}.brand-logo{font-size:1.35rem;font-weight:700;color:var(--primary);white-space:nowrap}.brand-icon{display:none;font-size:1.25rem;font-weight:700;color:var(--primary)}.page.sidebar-collapsed .brand-logo{display:none}.page.sidebar-collapsed .brand-icon{display:block}.main-sidebar{height:calc(100vh - var(--header-h));overflow-y:auto;padding:.75rem 0}.side-menu{list-style:none;margin:0;padding:0 .65rem}.slide__category{padding:.85rem .75rem .35rem}.category-name{font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--menu-category)}.page.sidebar-collapsed .slide__category{display:none}.side-menu__item{width:100%;border:0;background:transparent;color:var(--menu-text);display:flex;align-items:center;gap:.75rem;padding:.6rem .85rem;border-radius:var(--radius-sm);margin-bottom:.15rem;font-size:.875rem;font-weight:400;text-align:start}.side-menu__item:hover{background:var(--surface-muted);color:var(--text-title)}.side-menu__item.active{background:var(--primary-soft);color:var(--primary);font-weight:500}.side-menu__icon{display:grid;place-items:center;flex-shrink:0;width:1.35rem}.page.sidebar-collapsed .side-menu__item{justify-content:center;padding-inline:.5rem}.page.sidebar-collapsed .side-menu__label{display:none}.app-header{position:fixed;top:0;right:0;left:var(--sidebar-current);height:var(--header-h);background:var(--surface);border-bottom:1px solid var(--border);z-index:101;display:flex;align-items:center;justify-content:space-between;padding:0 1.25rem;transition:left .2s ease}.header-content-left,.header-content-right{display:flex;align-items:center;gap:.75rem}.header-link{border:0;background:transparent;color:var(--menu-text);width:2.25rem;height:2.25rem;border-radius:var(--radius-sm);display:grid;place-items:center}.header-link:hover{background:var(--surface-muted);color:var(--primary)}.header-search{position:relative;display:flex;align-items:center}.header-search svg{position:absolute;left:.75rem;color:var(--text-muted)}.header-search input{width:220px;border:1px solid var(--input-border);border-radius:var(--radius-sm);padding:.45rem .75rem .45rem 2.25rem;background:var(--surface-muted);color:var(--text)}.header-search input:focus{outline:none;border-color:var(--primary);background:var(--surface)}.header-profile{display:flex;align-items:center;gap:.5rem}.profile-name{font-size:.85rem;font-weight:500;color:var(--text-title)}.profile-avatar{width:2rem;height:2rem;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-size:.8rem;font-weight:700}.main-content{margin-left:var(--sidebar-current);margin-top:var(--header-h);height:calc(100vh - var(--header-h));display:flex;flex-direction:column;min-width:0;transition:margin-left .2s ease}.main-container{flex:1;min-height:0;overflow-y:auto;padding:0 1.5rem 1rem}.container-fluid{width:100%}.page-header-block{margin:1.25rem 0 1.5rem}.breadcrumb-nav{display:flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--text-muted);margin-bottom:.35rem}.breadcrumb-nav .sep{opacity:.5}.page-heading{margin:0;font-size:1.35rem;font-weight:500;color:var(--text-title)}.page-subheading{margin:.35rem 0 0;color:var(--text-muted);font-size:.875rem}.footer{flex-shrink:0;border-top:1px solid var(--border);background:var(--surface);padding:.85rem 1.5rem}.footer-inner{display:flex;justify-content:space-between;gap:.75rem;flex-wrap:wrap;color:var(--text-muted);font-size:.8rem}@media (max-width: 992px){.page{--sidebar-current: 0px}.page:not(.sidebar-collapsed){--sidebar-current: var(--sidebar-w)}.app-sidebar{transform:translate(-100%);width:var(--sidebar-w);transition:transform .2s ease}.page:not(.sidebar-collapsed) .app-sidebar{transform:translate(0)}.app-header{left:0}.main-content{margin-left:0}.header-search{display:none}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--card-shadow);margin-bottom:1.5rem}.card-body{padding:1.25rem}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--card-shadow);margin-bottom:1.5rem}.panel-head{padding:.9rem 1.25rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:.75rem}.panel-head h3{margin:0;font-size:1rem;font-weight:500;color:var(--text-title)}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.25rem;margin-bottom:1.5rem}@media (max-width: 1200px){.stat-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 576px){.stat-grid{grid-template-columns:1fr}}.stat-card-valex{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--card-shadow);padding:1.15rem 1.25rem;text-align:left;width:100%;display:flex;align-items:flex-start;gap:1rem;transition:transform .15s ease,box-shadow .15s ease}.stat-card-valex:hover{transform:translateY(-2px);box-shadow:-4px 8px 16px #dadee8}.stat-card-valex .stat-icon{width:48px;height:48px;border-radius:var(--radius);display:grid;place-items:center;flex-shrink:0}.stat-icon.primary{background:var(--primary-soft);color:var(--primary)}.stat-icon.success{background:var(--success-soft);color:var(--success)}.stat-icon.warning{background:var(--warning-soft);color:var(--warning)}.stat-icon.info{background:var(--info-soft);color:var(--info)}.stat-card-valex .stat-label{font-size:.75rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.25rem}.stat-card-valex .stat-value{font-size:1.5rem;font-weight:500;color:var(--text-title);font-variant-numeric:tabular-nums}.system-panel{margin-bottom:1.5rem}.system-meta{color:var(--text-muted);font-size:.8rem}.system-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;padding:1.15rem 1.25rem 1.25rem}@media (max-width: 992px){.system-grid{grid-template-columns:1fr}}.resource-card{background:var(--surface-muted);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.resource-head{display:flex;align-items:center;gap:.85rem;margin-bottom:.75rem}.resource-head .stat-value{font-size:1.35rem;font-weight:500;color:var(--text-title);font-variant-numeric:tabular-nums}.usage-bar{height:8px;border-radius:999px;background:#e4e9f4;overflow:hidden}.usage-bar>span{display:block;height:100%;border-radius:inherit;background:var(--primary);transition:width .35s ease}.usage-bar.ok>span{background:var(--success)}.usage-bar.warning>span{background:var(--warning)}.usage-bar.danger>span{background:var(--danger)}.resource-foot{margin-top:.55rem;font-size:.8rem;color:var(--text-muted)}.resource-foot.muted{margin-top:.2rem}.core-bars{display:flex;align-items:flex-end;gap:3px;height:36px;margin-top:.75rem}.core-bar{flex:1;height:100%;background:#e4e9f4;border-radius:2px;display:flex;align-items:flex-end;overflow:hidden}.core-bar>span{display:block;width:100%;background:var(--primary);min-height:2px;transition:height .35s ease}.monitor-toolbar{display:flex;justify-content:flex-end;margin-bottom:1rem}.live-badge{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;border-radius:2rem;background:var(--success-soft);color:var(--success);font-size:.78rem;font-weight:500;border:1px solid rgba(34,192,60,.2)}.live-badge.off{background:var(--danger-soft);color:var(--danger);border-color:#ee335e33}.live-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.monitor-layout{display:grid;grid-template-columns:2fr 1fr;gap:1.25rem}@media (max-width: 992px){.monitor-layout{grid-template-columns:1fr}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#031b4e73;display:grid;place-items:center;padding:1rem;z-index:2000}.modal-panel{width:min(720px,96vw);max-height:86vh;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--card-shadow);display:flex;flex-direction:column}.modal-panel.wide{width:min(960px,98vw)}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.modal-head h3{margin:0;font-size:1rem;font-weight:500;color:var(--text-title)}.modal-body{padding:1.25rem;overflow:auto}.modal-scroll{max-height:65vh}.form-grid{display:grid;gap:1rem}label{display:grid;gap:.35rem;font-size:.875rem;color:var(--text-title);font-weight:500}input,textarea,select{background:var(--surface);color:var(--text);border:1px solid var(--input-border);border-radius:var(--radius-sm);padding:.5rem .75rem}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 .15rem rgba(var(--primary-rgb),.15)}.inline-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:1.25rem;align-items:end;padding-bottom:1.25rem;border-bottom:1px solid var(--border)}.checkbox-row{display:flex;align-items:center;gap:.5rem;color:var(--text);padding-bottom:.35rem;font-weight:400}.btn{border:1px solid transparent;border-radius:var(--radius-sm);padding:.5rem .9rem;background:var(--primary);color:#fff;font-size:.875rem;font-weight:500}.btn:hover{background:var(--primary-hover)}.btn:disabled{opacity:.65;cursor:not-allowed}.btn-outline-primary{background:transparent;border-color:var(--primary);color:var(--primary)}.btn-outline-primary:hover{background:var(--primary);color:#fff}.btn.secondary{background:var(--surface-muted);border-color:var(--border);color:var(--text)}.btn.secondary:hover{background:var(--body-bg)}.btn-light{background:var(--surface-muted);border-color:var(--border);color:var(--text)}.btn.danger{background:var(--danger-soft);border-color:transparent;color:var(--danger)}.btn.danger:hover{background:#ee335e33}.btn.sm{padding:.35rem .7rem;font-size:.8125rem}table{width:100%;border-collapse:collapse;font-size:.875rem}th,td{text-align:left;padding:.75rem;border-bottom:1px solid var(--border);vertical-align:middle}th{color:var(--text-title);font-weight:500;font-size:.8125rem;background:var(--surface-muted)}tbody tr:hover{background:rgba(var(--primary-rgb),.03)}.topic{color:var(--primary);word-break:break-all;font-family:ui-monospace,Consolas,monospace;font-size:.8125rem}.payload{font-family:ui-monospace,Consolas,monospace;white-space:pre-wrap;word-break:break-word;max-width:480px;font-size:.8125rem}.scroll-box{max-height:52vh;overflow:auto}.topics-list{list-style:none;margin:0;padding:0}.topics-list li{display:flex;justify-content:space-between;gap:.75rem;padding:.75rem 1.25rem;border-bottom:1px solid var(--border)}.topics-list li span:last-child{color:var(--text-title);font-weight:500;font-variant-numeric:tabular-nums}.empty{color:var(--text-muted);padding:1.5rem .75rem;text-align:center}.error-banner{margin-bottom:1rem;padding:.75rem 1rem;border-radius:var(--radius-sm);background:var(--danger-soft);border:1px solid rgba(238,51,94,.2);color:var(--danger);font-size:.875rem}.hint{color:var(--text-muted);font-size:.875rem;margin:0 0 1rem}.actions{display:flex;flex-wrap:wrap;gap:.35rem}tr.clickable{cursor:pointer}.sim-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.sim-bar p{margin:.2rem 0 0}.sim-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.85rem 1.25rem;margin-bottom:1.25rem}.sim-field .k{color:var(--text-muted);font-size:.75rem}.sim-field .v{color:var(--text-title);font-weight:500;word-break:break-all}.sim-status{display:inline-flex;align-items:center;padding:.1rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500;background:var(--surface-muted);color:var(--text-muted)}.sim-status.s0{background:var(--info-soft);color:var(--info)}.sim-status.s1{background:var(--success-soft);color:var(--success)}.sim-status.s2{background:var(--danger-soft);color:var(--danger)}.sim-status.s6{background:var(--warning-soft);color:#9a6b00}.pager{display:flex;align-items:center;gap:.75rem;margin-top:1rem}.link-btn{padding:0;border:0;background:none;color:var(--primary);font:inherit;cursor:pointer}.link-btn:hover{text-decoration:underline}.user-log-bar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.user-log-conns{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.75rem}.user-log-list{max-height:52vh;overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-muted)}.user-log-row{display:grid;grid-template-columns:7.5rem 3.5rem minmax(0,1fr);gap:.75rem;align-items:start;padding:.55rem .75rem;border-bottom:1px solid var(--border);font-size:.8125rem}.user-log-time{font-variant-numeric:tabular-nums;color:var(--text-muted);font-family:ui-monospace,Consolas,monospace}.user-log-action{font-weight:600}.user-log-action.connect{color:var(--success)}.user-log-action.disconnect{color:var(--text-muted)}.user-log-action.publish,.user-log-action.subscribe{color:var(--primary)}.user-log-action.unsubscribe{color:#9a6b00}.user-log-action.rejected{color:var(--danger)}.user-log-body{display:flex;flex-direction:column;gap:.2rem;min-width:0}.user-log-body .payload{max-width:none}
