*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--bg-card:#1a1d27;--bg-input:#252830;--border:#2e3140;--text:#e4e6eb;--text-dim:#8b8fa3;--accent:#3b82f6;--accent-hover:#2563eb;--danger:#ef4444;--success:#22c55e;--warning:#f59e0b;--radius:8px}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;border-radius:var(--radius);border:none;padding:8px 16px;font-size:14px;font-weight:500;transition:background .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#dc2626}.btn-ghost{color:var(--text-dim);border:1px solid var(--border);background:0 0}.btn-ghost:hover{background:var(--bg-input);color:var(--text)}input,select,textarea{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);width:100%;padding:8px 12px;font-size:14px}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.layout{min-height:100vh;display:flex}.sidebar{background:var(--bg-card);border-right:1px solid var(--border);flex-shrink:0;width:220px;padding:16px 0}.sidebar h2{border-bottom:1px solid var(--border);margin-bottom:8px;padding:0 16px 16px;font-size:16px}.sidebar a{color:var(--text-dim);padding:10px 20px;font-size:14px;display:block}.sidebar a:hover,.sidebar a.active{background:var(--bg-input);color:var(--text);text-decoration:none}.main{flex:1;min-width:0;padding:24px;overflow-x:hidden}.page-title{margin-bottom:20px;font-size:20px;font-weight:600}.grid-hosts{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.host-card{cursor:pointer;transition:border-color .15s}.host-card:hover{border-color:var(--accent)}.host-card.offline{border-color:var(--danger)}.badge{border-radius:12px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.badge-online{color:var(--success);background:#052e16}.badge-offline{color:var(--danger);background:#450a0a}.stat-row{color:var(--text-dim);justify-content:space-between;margin-top:8px;font-size:13px;display:flex}.stat-row span:last-child{color:var(--text);font-weight:500}.form-group{margin-bottom:16px}.form-group label{color:var(--text-dim);margin-bottom:4px;font-size:13px;display:block}.table{border-collapse:collapse;width:100%}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 12px;font-size:13px}.table th{color:var(--text-dim);font-weight:500}.chart-container{width:100%;height:200px;position:relative}.empty{text-align:center;color:var(--text-dim);padding:40px}.error-msg{color:var(--danger);margin-top:8px;font-size:13px}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-box{width:100%;max-width:380px}.login-box h1{text-align:center;margin-bottom:24px;font-size:24px}.actions{align-items:center;gap:8px;display:flex}.flex-between{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.tabs{border-bottom:1px solid var(--border);gap:0;margin-bottom:20px;display:flex}.tab{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 16px;font-size:14px}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.log-line{border-bottom:1px solid var(--border);word-break:break-all;padding:6px 0;font-family:SF Mono,Menlo,monospace;font-size:12px}.log-time{color:var(--text-dim);margin-right:8px}.log-kw{color:var(--warning);font-weight:600}.token-display{background:var(--bg-input);border-radius:var(--radius);word-break:break-all;border:1px solid var(--border);padding:8px 12px;font-family:monospace;font-size:13px}@media (width<=768px){.sidebar{display:none}.sidebar.open{z-index:100;height:100vh;display:block;position:fixed;top:0;left:0}.mobile-header{background:var(--bg-card);border-bottom:1px solid var(--border);align-items:center;padding:12px 16px;display:flex}.mobile-header button{color:var(--text);background:0 0;padding:4px 8px;font-size:20px}.main{padding:16px}.grid-hosts{grid-template-columns:1fr}}@media (width>=769px){.mobile-header{display:none}}
