@import url('https://fonts.googleapis.com/css2?family=Rubik:wght@400;500;600;700&display=swap');
:root{--primary:#7366ff;--primary-soft:#f0eeff;--success:#54ba4a;--danger:#fc4438;--warning:#ffaa05;--info:#16c7f9;--text:#2b2b35;--muted:#8b8b99;--bg:#f5f6fa;--card:#fff;--line:#e9e9f0;--sidebar:265px;--rail:95px;--header:80px;--shadow:0 4px 22px rgba(39,40,58,.07)}
*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{font:14px Rubik,system-ui,sans-serif;color:var(--text);background:var(--bg)}button,input,select{font:inherit}button{cursor:pointer}svg{width:20px;height:20px}.page-wrapper{min-height:100vh}.page-body-wrapper{min-height:100vh}
/* header */
.hub-header{position:fixed;z-index:40;left:var(--sidebar);right:0;top:0;height:var(--header);background:#fff;box-shadow:0 4px 30px rgba(39,32,120,.07);transition:left .28s}.header-wrapper{height:100%;padding:0 28px;display:flex;align-items:center;gap:16px}.header-promo{display:flex;align-items:center;gap:8px;min-width:0;flex:1;color:#77778a}.header-promo p{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-promo b{color:var(--primary);font-weight:500}.header-actions{margin-left:auto;display:flex;align-items:center;gap:9px;flex:none}.icon-button,.notification-button{width:40px;height:40px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#6f6f7c;display:grid;place-items:center;text-decoration:none;position:relative}.icon-button svg,.notification-button svg{fill:none;stroke:currentColor}.icon-button:hover{background:var(--primary-soft);color:var(--primary)}.notification-button span{position:absolute;right:-4px;top:-5px;width:17px;height:17px;display:grid;place-items:center;border-radius:50%;background:var(--danger);color:#fff;font-size:10px}.sidebar-toggle{display:none}.primary{border:0;border-radius:8px;background:var(--primary);color:#fff;padding:10px 16px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 6px 15px rgba(115,102,255,.2)}.primary:hover{background:#6255e9}.primary svg{fill:none;stroke:currentColor;width:17px}.admin-chip{display:flex;align-items:center;gap:9px;border:0;background:transparent;padding:3px;color:var(--text)}.admin-chip img{width:39px;height:39px;border-radius:50%;object-fit:cover}.admin-chip>div{display:flex;flex-direction:column;text-align:left}.admin-chip small{color:var(--muted);font-size:11px}.profile-menu{position:relative}.profile-dropdown{display:none;position:absolute;right:0;top:calc(100% + 15px);width:220px;padding:9px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 14px 36px #2525382b}.profile-dropdown.open{display:block}.profile-dropdown-head{display:flex;flex-direction:column;padding:9px 10px 12px;border-bottom:1px solid var(--line);margin-bottom:5px}.profile-dropdown-head small{color:var(--muted);margin-top:3px}.profile-dropdown a,.profile-dropdown button{width:100%;padding:10px;border:0;border-radius:7px;background:transparent;color:#646472;display:flex;gap:10px;align-items:center;text-decoration:none}.profile-dropdown a:hover{background:var(--primary-soft);color:var(--primary)}.profile-dropdown button:hover{background:#ffedeb;color:var(--danger)}.profile-dropdown svg{width:17px;fill:none;stroke:currentColor}.profile-dropdown form{margin:0}
/* sidebar exact compact/rail behavior */
.hub-sidebar{position:fixed;z-index:50;inset:0 auto 0 0;width:var(--sidebar);background:#fff;border-right:1px solid var(--line);transition:width .28s;display:flex;flex-direction:column;overflow:hidden}.sidebar-brand{height:var(--header);flex:0 0 var(--header);padding:0 25px 0 29px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 0 20px #19192312}.sidebar-brand>img{width:118px;max-height:48px;object-fit:contain}.brand-grid{width:36px;height:36px;border:0;background:transparent;display:grid;place-items:center;color:#34343d}.brand-grid:hover{border-radius:8px;background:var(--primary-soft);color:var(--primary)}.brand-grid svg{fill:currentColor}.sidebar-main{flex:1;min-height:0;padding:25px 0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#d6d7e0 transparent}.sidebar-main::-webkit-scrollbar{width:6px}.sidebar-main::-webkit-scrollbar-thumb{background:#d6d7e0;border-radius:10px}.menu-label{font-size:12px;letter-spacing:.06em;font-weight:600;color:#5e5e72;margin:19px 20px 9px;white-space:nowrap}.nav{width:100%;min-height:44px;margin:2px 0;padding:11px 20px;border:0;border-right:4px solid transparent;background:transparent;color:#777786;display:flex;align-items:center;gap:12px;text-decoration:none;text-align:left;white-space:nowrap;position:relative}.nav svg{width:19px;height:19px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7}.nav .fill-icon{display:none}.nav:hover,.nav.active{color:var(--primary);background:var(--primary-soft)}.nav.active{border-right-color:var(--primary);font-weight:500}.nav em{margin-left:auto;padding:2px 6px;border-radius:10px;background:#e4e0ff;color:var(--primary);font-size:10px;font-style:normal}.hub-sidebar.close_icon{width:var(--rail)}.hub-sidebar.close_icon .sidebar-brand{padding:0;justify-content:center;position:relative}.hub-sidebar.close_icon .sidebar-brand>img{width:45px;max-height:45px;object-fit:contain}.hub-sidebar.close_icon .brand-grid{position:absolute;inset:0;width:100%;height:100%;opacity:0}.hub-sidebar.close_icon .sidebar-main{padding-top:24px}.hub-sidebar.close_icon .menu-label,.hub-sidebar.close_icon .nav span,.hub-sidebar.close_icon .nav em{display:none}.hub-sidebar.close_icon .nav{height:46px;justify-content:center;padding:0;border-right-width:3px}.hub-sidebar.close_icon .nav svg{width:21px;height:21px}.hub-sidebar.close_icon .nav:hover:after{content:attr(data-label);position:fixed;left:84px;padding:7px 10px;border-radius:6px;background:#2d2d3a;color:#fff;font-size:11px;box-shadow:0 5px 16px #0002;z-index:100}
/* body, title and footer */
.hub-main{margin-left:var(--sidebar);padding-top:var(--header);min-height:100vh;display:flex;flex-direction:column;transition:margin-left .28s}.hub-sidebar.close_icon~.hub-main{margin-left:var(--rail)}.hub-header.close_icon{left:var(--rail)}.cuba-titlebar{height:90px;flex:0 0 90px;padding:0 30px;background:#fff;display:flex;align-items:center;justify-content:space-between}.cuba-titlebar h1{font-size:24px;margin:0}.cuba-breadcrumb{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px}.cuba-breadcrumb svg{width:16px;fill:none;stroke:currentColor}.cuba-breadcrumb b{color:var(--primary);font-weight:500}.hub-content{padding:30px;flex:1;width:100%;max-width:1700px;margin:0 auto}.hub-footer{width:100%;margin:0;padding:18px 30px;background:#fff;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:var(--muted);font-size:12px}
/* dashboard */
.cuba-overview{display:grid;grid-template-columns:minmax(400px,1.08fr) minmax(460px,1fr);gap:24px}.cuba-welcome{height:236px;border-radius:15px;background:linear-gradient(120deg,#4ba6f1,#7561ff);color:#fff;position:relative;overflow:hidden;padding:33px 30px}.cuba-welcome h2{font-size:25px;color:#fff;margin:0 0 10px}.cuba-welcome p{max-width:280px;line-height:1.6}.welcome-action{position:relative;z-index:2;margin-top:20px;padding:9px 25px;border:1px solid #fff;border-radius:6px;background:transparent;color:#fff}.cuba-welcome img{position:absolute;right:20px;bottom:-4px;width:220px;height:205px}.welcome-orb{position:absolute;right:110px;top:24px;width:68px;height:68px;border:2px solid #ffffff55;border-radius:50%}.cuba-metrics{display:grid;grid-template-columns:1fr 1fr;gap:22px}.cuba-metric,.cuba-mini,.panel{background:#fff;border:0;border-radius:14px;box-shadow:var(--shadow)}.cuba-metric{min-height:105px;padding:18px;display:flex;align-items:center;gap:16px}.metric-ring{width:59px;height:59px;flex:0 0 59px;border:2px solid #ff517a;border-radius:50%;display:grid;place-items:center;color:#ff517a}.metric-ring svg{width:23px;fill:none;stroke:currentColor}.cuba-metric:nth-child(2) .metric-ring{color:var(--primary);border-color:var(--primary)}.cuba-metric:nth-child(3) .metric-ring{color:var(--warning);border-color:var(--warning)}.cuba-metric:nth-child(4) .metric-ring{color:var(--success);border-color:var(--success)}.cuba-metric b,.cuba-mini b{display:block;font-size:25px}.cuba-metric span,.cuba-mini span{display:block;color:var(--muted);margin-top:6px}.cuba-mini-row{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:24px}.cuba-mini{height:94px;padding:20px;display:flex;align-items:center;justify-content:space-between}.mini-bars{display:flex;align-items:center;gap:6px}.mini-bars i{width:6px;height:31px;border-radius:5px;background:var(--primary)}.mini-bars i:nth-child(odd){height:18px;opacity:.35}.mini-wave{width:230px;height:55px}.mini-wave path{fill:none;stroke:var(--info);stroke-width:3}.dashboard-grid{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(270px,.62fr);gap:24px}.panel{padding:24px;margin-top:22px;min-width:0}.dashboard-grid .panel{margin-top:0}.panel h2{font-size:18px;margin:0 0 6px}.panel-head,.chart-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.muted{color:var(--muted)}.health-list{padding:0;margin:14px 0 0;list-style:none}.health-list li{padding:11px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:9px}.health-list small{margin-left:auto;color:var(--muted)}.health-dot{width:9px;height:9px;border-radius:50%;background:var(--success)}
/* pages, cards and tables */
.content>.panel:first-child{margin-top:0}.table-wrap{width:100%;overflow:auto;margin-top:20px;border:1px solid var(--line);border-radius:10px}.table-wrap table{width:100%;border-collapse:separate;border-spacing:0;margin:0}.table-wrap th{padding:13px 15px;background:#fafafe;color:#888896;font-size:10px;letter-spacing:.06em;text-transform:uppercase;text-align:left;white-space:nowrap;border-bottom:1px solid var(--line)}.table-wrap td{padding:15px;color:#555563;border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap}.table-wrap tbody tr:last-child td{border-bottom:0}.table-wrap tbody tr:hover td{background:#fcfcff}.table-wrap code{padding:4px 7px;border-radius:5px;background:#f0eeff;color:#6659dc}.badge{display:inline-block;padding:5px 10px;border-radius:20px;background:#e9f8e8;color:#31862b;font-size:11px}.badge.attention{background:#fff4da;color:#b97800}.badge.disconnected{background:#ffedeb;color:#c9433a}.empty{margin-top:18px;padding:50px;border:1px dashed #dcdce6;border-radius:10px;text-align:center;color:var(--muted)}.secondary{padding:9px 13px;border:1px solid var(--line);border-radius:7px;background:#fff;color:#656571}.secondary:hover{border-color:var(--primary);color:var(--primary)}.row-actions{display:flex;gap:7px}.action-edit,.action-delete{padding:7px 10px;border:0;border-radius:6px;font-size:11px;font-weight:600}.action-edit{background:#efedff;color:#6558e8}.action-delete{background:#ffedeb;color:#d64137}.settings-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,.7fr);gap:22px}.settings-grid .panel{margin-top:0;margin-bottom:22px}.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}label{display:grid;gap:7px;margin:15px 0;font-weight:500}label small{color:var(--muted);font-weight:400}input,select{width:100%;padding:11px 12px;border:1px solid #dddde7;border-radius:8px;background:#fff;color:var(--text);outline:0}input:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #7366ff18}.switch-line{display:flex;align-items:center;gap:10px}.switch-line input{width:18px;height:18px}.secret{padding:13px;border:1px dashed #bbb8d9;border-radius:8px;background:#f7f7fb;color:#5c51c5;word-break:break-all}.skeleton{height:190px;border-radius:14px;background:linear-gradient(90deg,#eeeef3,#fafaff,#eeeef3);background-size:200%;animation:p 1.2s infinite}@keyframes p{to{background-position:-200%}}
/* dialogs/toasts */
.modal-backdrop{position:fixed;inset:0;z-index:9999;padding:28px 16px;background:#2424369c;backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;overflow:auto}.modal-backdrop>.modal{position:relative;display:block;width:min(100%,560px);height:auto;max-height:calc(100vh - 56px);margin:auto;padding:0 26px 24px;overflow:auto;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 24px 70px #0004}.modal>h2{position:sticky;top:0;z-index:2;margin:0 -26px 16px;padding:23px 26px 16px;background:#fff;border-bottom:1px solid var(--line);font-size:20px}.modal-actions{position:sticky;bottom:-24px;z-index:2;margin:20px -26px -24px;padding:15px 26px 20px;background:#fff;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px}.alert{padding:12px 14px;border-radius:8px;background:#e9f8e8;color:#31862b}.alert.danger{background:#ffedeb;color:#bf3e36}.danger-button{padding:10px 15px;border:0;border-radius:8px;background:var(--danger);color:#fff;font-weight:600}.dialog-icon{width:46px;height:46px;margin-top:24px;border-radius:50%;display:grid;place-items:center;font-size:24px;font-weight:700}.danger-icon{background:#ffedeb;color:var(--danger)}#toastRoot{position:fixed;right:22px;top:92px;z-index:11000;display:grid;gap:10px}.hub-toast{max-width:380px;padding:13px 17px;border-radius:9px;background:#28283a;color:#fff;box-shadow:0 10px 30px #0003;opacity:0;transform:translateX(20px);transition:.22s}.hub-toast.show{opacity:1;transform:none}.hub-toast.success{border-left:4px solid var(--success)}.hub-toast.error{border-left:4px solid var(--danger)}
/* login */
.cuba-auth{min-height:100vh;display:grid;place-items:center;padding:32px;background:#f7f7fb url('/assets/cuba/login_bg.jpg') center/cover no-repeat}.auth-card{width:min(100%,460px);margin:auto;padding:42px 44px;background:#fff;border-radius:12px;box-shadow:0 10px 40px rgba(29,30,44,.09)}.auth-brand{display:flex;justify-content:center;align-items:center;gap:12px;margin-bottom:30px}.hub-logo{width:46px;height:46px;border-radius:13px;background:linear-gradient(135deg,#7c6cff,#5548e8);color:#fff;display:grid;place-items:center;font-size:21px;font-weight:700}.auth-brand>div{display:flex;flex-direction:column}.auth-brand small{color:var(--muted)}.auth-kicker{display:none}.auth-copy{text-align:center;margin-bottom:22px}.auth-copy h1{font-size:28px;margin:0 0 8px}.auth-copy p{color:var(--muted);line-height:1.55;margin:0}.password-field{position:relative}.password-field input{padding-right:45px}.password-toggle{position:absolute;right:5px;top:5px;width:36px;height:36px;border:0;background:transparent}.password-toggle svg{fill:none;stroke:currentColor}.wide{width:100%;margin-top:10px}.auth-security{text-align:center;color:var(--muted);font-size:11px;margin-top:23px}.auth-visual{display:none}.login-page [class*="social"],.login-page [class*="signup"],.login-page .or,.login-page .or-sign{display:none!important}
body.dark-only{--text:#f2f2f6;--muted:#aaaabd;--bg:#171829;--card:#202136;--line:#303149;background:var(--bg)}body.dark-only .hub-header,body.dark-only .hub-sidebar,body.dark-only .cuba-titlebar,body.dark-only .hub-footer,body.dark-only .panel,body.dark-only .cuba-metric,body.dark-only .cuba-mini,body.dark-only .profile-dropdown,body.dark-only input,body.dark-only select,body.dark-only .secondary{background:var(--card)}body.dark-only .table-wrap th{background:#1b1c2e}body.dark-only .table-wrap tbody tr:hover td{background:#25263d}
#themeToggle{display:none!important}.admin-chip img{background:#f2f3f7;border:1px solid #ececf2}.upload-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.login-brand-image{display:block;max-width:210px;max-height:72px;width:auto;height:auto;object-fit:contain}.auth-brand:has(.login-brand-image)>div{display:none}
@media(max-width:1184px){.sidebar-toggle{display:grid}.header-promo{display:none}.cuba-overview{grid-template-columns:1fr}.cuba-mini-row,.dashboard-grid{grid-column:auto}}
@media(max-width:760px){.hub-sidebar{transform:translateX(-100%);width:265px}.hub-sidebar.mobile-open{transform:none}.hub-sidebar.mobile-open .sidebar-brand{padding:0 25px;justify-content:space-between}.hub-sidebar.mobile-open .sidebar-brand>img{content:normal;width:118px}.hub-sidebar.mobile-open .brand-grid{display:grid}.hub-sidebar.mobile-open .menu-label,.hub-sidebar.mobile-open .nav span,.hub-sidebar.mobile-open .nav em{display:block}.hub-sidebar.mobile-open .nav{justify-content:flex-start;padding:11px 20px}.hub-header{left:0}.hub-main{margin-left:0}.header-wrapper{padding:0 13px}.header-actions>a.icon-button,.notification-button{display:none}.admin-chip>div{display:none}#newConnection{max-width:44px;font-size:0}.cuba-titlebar{height:75px;padding:0 15px}.cuba-breadcrumb{display:none}.hub-content{padding:15px}.cuba-metrics,.cuba-mini-row,.dashboard-grid,.settings-grid,.upload-grid{grid-template-columns:1fr}.cuba-welcome img{opacity:.4}.hub-footer{flex-direction:column;gap:5px}.modal-backdrop{padding:10px}.modal-backdrop>.modal{max-height:calc(100vh - 20px)}.cuba-auth{display:block;padding:18px;background:var(--bg)}.auth-card{padding:28px 22px;background:#fff;border-radius:15px}.auth-visual{display:none}}

/* Match CUBA sidebar hover expansion and keep a single SimpleBar scrollbar. */
.sidebar-main{overflow:hidden!important;scrollbar-width:none}.sidebar-main::-webkit-scrollbar{display:none}.sidebar-main>.simplebar-wrapper{height:100%}.sidebar-main .simplebar-content{padding:25px 0!important}.sidebar-main .simplebar-track.simplebar-vertical{right:2px;width:7px}.sidebar-main .simplebar-scrollbar:before{background:#bfc1cc;border-radius:8px;opacity:.65}
.brand-grid svg,.sidebar-toggle svg{fill:none!important;stroke:currentColor!important;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.hub-sidebar .nav[data-view="settings"] svg{fill:none!important;stroke:currentColor!important;stroke-width:1.6}
@media(min-width:761px){.hub-sidebar.close_icon:hover{width:var(--sidebar);box-shadow:8px 0 28px rgba(31,31,48,.13)}.hub-sidebar.close_icon:hover .sidebar-brand{padding:0 25px 0 29px;justify-content:space-between}.hub-sidebar.close_icon:hover .sidebar-brand>img{width:118px;max-height:48px}.hub-sidebar.close_icon:hover .brand-grid{position:static;width:36px;height:36px;opacity:1}.hub-sidebar.close_icon:hover .menu-label,.hub-sidebar.close_icon:hover .nav span{display:block}.hub-sidebar.close_icon:hover .nav em{display:inline-block}.hub-sidebar.close_icon:hover .nav{height:auto;justify-content:flex-start;padding:11px 20px;border-right-width:4px}.hub-sidebar.close_icon:hover .nav svg{width:19px;height:19px}.hub-sidebar.close_icon:hover .nav:hover:after{display:none}}
