:root{
  --bg:#07111f;--panel:#0d1a2b;--panel-2:#111f34;--panel-3:#162640;--border:#203451;
  --text:#edf3ff;--muted:#8fa2bd;--purple:#8b5cf6;--purple-2:#6d28d9;--blue:#3b82f6;
  --green:#21c97a;--yellow:#f7b84b;--red:#ef6673;--cyan:#39c5d6;--shadow:0 18px 60px rgba(0,0,0,.28);
  --radius:18px;--radius-sm:12px;
}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;background:radial-gradient(circle at 80% 0%,rgba(109,40,217,.14),transparent 35%),var(--bg);color:var(--text);font:14px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh}
button,input,select,textarea{font:inherit}.hidden{display:none!important}.muted{color:var(--muted)}.stack{display:flex;flex-direction:column}.gap-12{gap:12px}.full{width:100%}.error-text{color:var(--red);min-height:20px}
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(440px,100%);padding:34px;border:1px solid var(--border);border-radius:28px;background:linear-gradient(180deg,rgba(17,31,52,.96),rgba(9,21,37,.96));box-shadow:var(--shadow);display:grid;gap:24px}.brand-orb{width:68px;height:68px;border-radius:22px;display:grid;place-items:center;font-weight:900;letter-spacing:.08em;background:linear-gradient(135deg,var(--blue),var(--purple));box-shadow:0 12px 30px rgba(109,40,217,.35)}.brand-orb.small{width:42px;height:42px;border-radius:14px;font-size:12px}.eyebrow{display:block;text-transform:uppercase;letter-spacing:.12em;font-size:11px;color:#7ea0d4;font-weight:800}.login-card h1,.topbar h2{margin:.15rem 0 0}.login-card h1{font-size:28px}.login-card label,.form-grid label{display:grid;gap:7px;color:#b8c6d9;font-weight:650}.login-card input,.form-grid input,.form-grid select,.form-grid textarea,.searchbar input,.searchbar select{width:100%;border:1px solid var(--border);background:#0a1727;color:var(--text);border-radius:11px;padding:11px 12px;outline:none}.login-card input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.searchbar input:focus,.searchbar select:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(139,92,246,.12)}
.app-shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.sidebar{position:sticky;top:0;height:100vh;border-right:1px solid var(--border);background:rgba(8,19,33,.94);backdrop-filter:blur(18px);padding:22px 16px;display:flex;flex-direction:column;z-index:20}.brand-row{display:flex;align-items:center;gap:12px;padding:0 8px 22px}.brand-row div:last-child{display:grid}.brand-row span{color:var(--muted);font-size:11px}.nav{display:grid;gap:5px;overflow:auto;padding-right:4px}.nav-item{border:0;color:#9eb0ca;background:transparent;padding:10px 12px;border-radius:11px;text-align:left;display:flex;gap:10px;align-items:center;cursor:pointer;font-weight:650}.nav-item:hover{background:#102039;color:#fff}.nav-item.active{color:#fff;background:linear-gradient(90deg,rgba(59,130,246,.17),rgba(139,92,246,.18));box-shadow:inset 3px 0 var(--purple)}.nav-item span{width:18px;text-align:center;color:#8eaef2}.sidebar-footer{margin-top:auto;padding-top:18px;display:grid;gap:12px}.connection-dot{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px;padding:0 6px}.connection-dot i{width:8px;height:8px;border-radius:50%;background:var(--yellow);box-shadow:0 0 14px rgba(247,184,75,.65)}.connection-dot.ok i{background:var(--green);box-shadow:0 0 14px rgba(33,201,122,.65)}.connection-dot.bad i{background:var(--red)}
.main-column{min-width:0}.topbar{position:sticky;top:0;z-index:10;background:rgba(7,17,31,.83);backdrop-filter:blur(16px);border-bottom:1px solid rgba(32,52,81,.75);padding:20px 28px;display:flex;justify-content:space-between;align-items:center}.topbar h2{font-size:24px}.topbar-actions{display:flex;align-items:center;gap:12px}.user-chip{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid var(--border);border-radius:14px;background:#0b1829}.user-chip div{display:grid}.user-chip small{color:var(--muted);font-size:10px}.avatar{width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,#2563eb,#7c3aed);display:grid;place-items:center;font-weight:800}.mobile-menu{display:none;background:none;border:0;color:white;font-size:22px;margin-right:8px}.page-content{padding:26px;max-width:1700px;margin:0 auto}.btn{border:1px solid transparent;border-radius:11px;padding:10px 13px;cursor:pointer;font-weight:750;transition:.16s}.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{background:linear-gradient(135deg,var(--blue),var(--purple));color:#fff}.btn.soft{background:#12233a;border-color:#253d60;color:#d9e5f8}.btn.ghost{background:transparent;border-color:var(--border);color:#b8c7db}.btn.danger{background:rgba(239,102,115,.12);border-color:rgba(239,102,115,.35);color:#ff9aa4}.btn.success{background:rgba(33,201,122,.13);border-color:rgba(33,201,122,.32);color:#76e9ae}.btn.warning{background:rgba(247,184,75,.12);border-color:rgba(247,184,75,.32);color:#ffd17f}.btn.small{padding:7px 9px;border-radius:9px;font-size:12px}
.hero{border:1px solid var(--border);border-radius:22px;padding:24px;background:linear-gradient(135deg,rgba(59,130,246,.12),rgba(139,92,246,.11) 45%,rgba(13,26,43,.9));display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:20px;overflow:hidden;position:relative}.hero:after{content:"";position:absolute;width:220px;height:220px;right:-80px;top:-90px;border-radius:50%;background:radial-gradient(circle,rgba(139,92,246,.22),transparent 68%)}.hero h3{margin:3px 0 6px;font-size:25px}.hero p{margin:0;color:#a7bad2;max-width:760px}.hero-side{text-align:right;z-index:1}.hero-side strong{font-size:28px}.hero-side span{display:block;color:var(--muted);font-size:11px}
.grid{display:grid;gap:16px}.stats-grid{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:16px}.card{background:linear-gradient(180deg,rgba(17,31,52,.96),rgba(12,25,43,.96));border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:0 10px 35px rgba(0,0,0,.12)}.stat-card{min-height:128px;position:relative;overflow:hidden}.stat-card:after{content:"";position:absolute;right:-18px;bottom:-28px;width:90px;height:90px;border:18px solid rgba(255,255,255,.025);border-radius:50%}.stat-head{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.stat-icon{font-size:18px}.stat-value{font-size:28px;font-weight:850;margin-top:18px;letter-spacing:-.03em}.stat-sub{font-size:11px;color:var(--muted);margin-top:5px}.two-col{grid-template-columns:1.2fr .8fr}.three-col{grid-template-columns:repeat(3,1fr)}.card-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.card-title h3{margin:0;font-size:15px}.card-title p{margin:3px 0 0;color:var(--muted);font-size:11px}.divider{height:1px;background:var(--border);margin:14px 0}
.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:14px}.table{width:100%;border-collapse:collapse;min-width:820px}.table th,.table td{padding:11px 12px;text-align:left;border-bottom:1px solid rgba(32,52,81,.65);vertical-align:middle}.table th{position:sticky;top:0;background:#0d1b2d;color:#8fa5c3;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.table tr:hover td{background:rgba(255,255,255,.018)}.table tr:last-child td{border-bottom:0}.mono{font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace;font-size:12px}.badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 9px;font-weight:750;font-size:11px;border:1px solid}.badge.success{color:#77e9ae;background:rgba(33,201,122,.1);border-color:rgba(33,201,122,.28)}.badge.warning{color:#ffd17e;background:rgba(247,184,75,.1);border-color:rgba(247,184,75,.28)}.badge.danger{color:#ff9ba5;background:rgba(239,102,115,.1);border-color:rgba(239,102,115,.28)}.badge.muted{color:#a3b4ca;background:rgba(143,162,189,.08);border-color:rgba(143,162,189,.22)}.badge.info{color:#9fc3ff;background:rgba(59,130,246,.1);border-color:rgba(59,130,246,.28)}
.progress{height:8px;background:#081423;border-radius:99px;overflow:hidden;border:1px solid #1d3150}.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--purple));border-radius:99px}.metric-line{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:11px;margin-top:6px}.searchbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.searchbar input{min-width:240px;flex:1}.searchbar select{width:auto;min-width:150px}.section-title{display:flex;justify-content:space-between;gap:14px;align-items:flex-end;margin-bottom:16px}.section-title h3{margin:0;font-size:19px}.section-title p{margin:4px 0 0;color:var(--muted)}
.detail-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.detail-item{padding:12px;background:#0a1728;border:1px solid var(--border);border-radius:12px}.detail-item span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em}.detail-item strong{display:block;margin-top:5px;word-break:break-word}.codebox{background:#07111e;border:1px solid #213552;border-radius:12px;padding:13px;white-space:pre-wrap;word-break:break-word;font-family:Consolas,monospace;font-size:12px;color:#b9cdf0;max-height:320px;overflow:auto}.qr-box{display:flex;gap:18px;align-items:center}.qr-box img{width:180px;height:180px;border-radius:16px;background:white;padding:8px}.action-row{display:flex;gap:8px;flex-wrap:wrap}
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.form-grid .span-2{grid-column:1/-1}.form-grid textarea{min-height:90px;resize:vertical}.operation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.operation-card h3{margin:0 0 6px}.operation-card p{margin:0 0 16px;color:var(--muted)}.risk{border-color:rgba(239,102,115,.35)}.safe{border-color:rgba(33,201,122,.28)}.notice{padding:12px 13px;border-radius:12px;border:1px solid rgba(59,130,246,.3);background:rgba(59,130,246,.08);color:#bcd5ff}.notice.warning{border-color:rgba(247,184,75,.3);background:rgba(247,184,75,.07);color:#f7d28e}.notice.danger{border-color:rgba(239,102,115,.35);background:rgba(239,102,115,.07);color:#ffb2ba}
.chart{display:flex;align-items:flex-end;gap:8px;height:220px;padding:20px 4px 2px}.bar{flex:1;min-width:18px;background:linear-gradient(180deg,var(--purple),var(--blue));border-radius:8px 8px 3px 3px;position:relative;opacity:.88}.bar:hover{opacity:1}.bar span{position:absolute;bottom:-22px;left:50%;transform:translateX(-50%);font-size:9px;color:var(--muted);white-space:nowrap}.bar b{position:absolute;top:-20px;left:50%;transform:translateX(-50%);font-size:9px;color:#d7e2f3;white-space:nowrap}.donut{width:150px;height:150px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--purple) var(--pct),#13243b 0);position:relative}.donut:after{content:"";width:104px;height:104px;border-radius:50%;background:#0e1c30;position:absolute}.donut strong{z-index:1;font-size:23px}.donut span{z-index:1;position:absolute;margin-top:34px;color:var(--muted);font-size:10px}
.device-groups{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.device-group{border:1px solid var(--border);background:#0b192b;border-radius:15px;padding:14px}.device-group h4{margin:0 0 10px}.chip-list{display:flex;flex-wrap:wrap;gap:7px}.chip{padding:7px 9px;border-radius:999px;background:#13253e;border:1px solid #243e62;color:#c9d7eb;font-size:11px}
.empty{padding:34px;text-align:center;color:var(--muted)}.spinner{width:24px;height:24px;border-radius:50%;border:3px solid #213755;border-top-color:var(--purple);animation:spin .8s linear infinite;margin:40px auto}@keyframes spin{to{transform:rotate(360deg)}}
.modal-backdrop{position:fixed;inset:0;background:rgba(1,8,17,.72);backdrop-filter:blur(8px);display:grid;place-items:center;padding:20px;z-index:100}.modal{width:min(900px,100%);max-height:90vh;overflow:auto;border:1px solid var(--border);border-radius:22px;background:#0c1a2d;box-shadow:var(--shadow);padding:20px}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}.modal-head h3{margin:0}.modal-close{border:0;background:#14253e;color:white;width:34px;height:34px;border-radius:10px;cursor:pointer}.toast-root{position:fixed;right:18px;top:18px;z-index:200;display:grid;gap:8px}.toast{width:min(380px,calc(100vw - 36px));padding:13px 15px;border:1px solid var(--border);border-radius:13px;background:#102037;box-shadow:var(--shadow);animation:toastIn .2s ease}.toast.success{border-color:rgba(33,201,122,.4)}.toast.error{border-color:rgba(239,102,115,.45)}@keyframes toastIn{from{transform:translateY(-8px);opacity:0}}
.kpi-list{display:grid;gap:9px}.kpi-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid rgba(32,52,81,.55)}.kpi-row:last-child{border:0}.kpi-row span{color:var(--muted)}.timeline{display:grid;gap:12px}.timeline-item{display:grid;grid-template-columns:12px 1fr;gap:10px}.timeline-item i{width:8px;height:8px;border-radius:50%;background:var(--purple);margin-top:7px}.timeline-item p{margin:2px 0;color:var(--muted);font-size:12px}.flex-between{display:flex;justify-content:space-between;align-items:center;gap:12px}.right{text-align:right}.nowrap{white-space:nowrap}
@media(max-width:1200px){.stats-grid{grid-template-columns:repeat(3,1fr)}.device-groups{grid-template-columns:repeat(2,1fr)}.detail-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-280px;transition:.2s;width:260px}.sidebar.open{left:0;box-shadow:30px 0 80px rgba(0,0,0,.5)}.mobile-menu{display:inline}.topbar{padding:16px}.page-content{padding:16px}.user-chip{display:none}.stats-grid,.two-col,.three-col,.operation-grid{grid-template-columns:1fr 1fr}.hero{align-items:flex-start}.hero-side{display:none}}
@media(max-width:620px){.stats-grid,.two-col,.three-col,.operation-grid,.device-groups,.form-grid,.detail-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}.topbar-actions .btn{font-size:0}.topbar-actions .btn:first-letter{font-size:14px}.page-content{padding:12px}.hero{padding:18px}.stat-card{min-height:110px}.table{min-width:700px}.qr-box{flex-direction:column;align-items:flex-start}}
.link-btn{border:0;background:none;color:#9fc3ff;padding:0;cursor:pointer;text-decoration:none}.link-btn:hover{text-decoration:underline}.checkbox{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center!important}.checkbox input{width:auto!important}
