:root{color-scheme:dark;--bg:#101518;--surface:#171d21;--raised:#1c2429;--border:#2a343a;--muted:#8c9ca5;--text:#e9eff0;--accent:#8be0c4;--danger:#f39c9c;--mono:Consolas,monospace}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.6 "Segoe UI","Microsoft YaHei",sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer;border:1px solid var(--border);background:var(--raised);color:var(--text);border-radius:7px;padding:9px 15px;transition:background .15s}button:hover{background:#2b383e}button:disabled{opacity:.45;cursor:wait}a{color:var(--accent);text-decoration:none}.hidden{display:none!important}.primary{background:var(--accent);color:#122c25;border-color:var(--accent);font-weight:650}.primary:hover{background:#a6edd5}.subtle,.icon{background:transparent}.icon{padding:5px 10px;font-size:20px;border-color:transparent}.danger{color:var(--danger)}.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#131a1e;border-right:1px solid var(--border);display:flex;flex-direction:column;padding:32px 18px 20px}.brand{display:flex;align-items:center;gap:12px;color:var(--text);font-size:19px;font-weight:750;letter-spacing:2px;padding:0 12px}.brand small{display:block;color:var(--muted);font:9px/1.8 var(--mono);letter-spacing:2px}.brand-mark{width:38px;height:40px;border:1px solid #68bd9f;color:var(--accent);display:grid;place-items:center;border-radius:10px 3px 10px 3px;font:750 25px/1 var(--mono);background:#1b312b}.workspace-label{margin:42px 15px 12px;color:#61747e;font-size:11px;letter-spacing:2px}.nav{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:13px 17px;background:transparent;border:0;color:#95a6af;margin:4px 0}.nav span{font-size:19px;line-height:1;width:20px}.nav.active{color:var(--accent);background:#20322e}.nav:hover{background:#20292e}.sidebar-bottom{display:flex;align-items:center;gap:9px;margin-top:auto;padding:16px 8px 0;border-top:1px solid var(--border);font-size:11px}.sidebar-bottom strong{display:block;max-width:137px;overflow:hidden;text-overflow:ellipsis}.sidebar-bottom small{color:var(--muted);font-size:10px}.host-dot,.status-dot{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;flex-shrink:0}.host-dot{box-shadow:0 0 0 4px #233c32}.sidebar-bottom .icon{margin-left:auto;font-size:19px}main{min-width:0;display:flex;flex-direction:column}header{height:80px;border-bottom:1px solid var(--border);padding:0 44px;display:flex;align-items:center;justify-content:space-between;font-size:12px}.breadcrumb{color:var(--muted)}.breadcrumb span{padding:0 15px;color:#53636b}.breadcrumb b{color:var(--text);font-weight:400}.header-right{display:flex;align-items:center;gap:10px;color:var(--muted)}.header-right button{margin-left:15px}.avatar{margin-left:10px;width:30px;height:30px;background:#2a3836;border:1px solid #42524e;border-radius:50%;display:grid;place-items:center;color:#b7d7ca}.content{padding:40px 44px 50px;max-width:1620px;width:100%;margin:auto;flex:1}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:32px}.eyebrow{font:10px var(--mono);letter-spacing:2px;color:#759187}h1{font-size:29px;font-weight:550;letter-spacing:-.5px;margin:8px 0}h2{font-size:16px;font-weight:550;margin:0}h3{font-size:15px;font-weight:500;margin:0}p{color:var(--muted);margin:6px 0}small{color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:28px}.stat{border:1px solid var(--border);border-radius:10px;padding:20px 23px;background:linear-gradient(135deg,#1b2528,#171d21)}.stat-head{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.stat-head span:last-child{color:#6e9a8e}.stat-value{font:38px/1.5 var(--mono);letter-spacing:-2px;margin:8px 0 4px}.stat small{font-size:10px}.card{border:1px solid var(--border);border-radius:10px;background:var(--surface);margin-bottom:23px;overflow:hidden}.card-head{padding:20px 23px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px}.card-body{padding:23px}.card-head small{font-size:11px}.two-cols{display:grid;grid-template-columns:1.4fr 1fr;gap:23px}.dependency-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.dependency{background:#141b1f;border:1px solid #29343a;border-radius:7px;padding:16px}.dependency strong{font-size:12px;font-weight:500;display:block;margin-bottom:12px}.badge{display:inline-flex;align-items:center;gap:5px;font:10px/1.5 var(--mono);padding:3px 7px;border-radius:4px;border:1px solid #35464c;color:#a6b6be;white-space:nowrap}.badge.ok{color:var(--accent);background:#20332c;border-color:#305043}.badge.warn{color:#d8bd83;background:#322c20;border-color:#514430}.badge.off{color:#87959e;background:#252b30}.badge.bad{color:var(--danger);background:#372528}.step{display:flex;gap:14px;padding:17px 0;border-bottom:1px solid var(--border)}.step:last-child{border:0}.step-no{font:12px var(--mono);color:var(--accent);border:1px solid #385548;border-radius:50%;width:25px;height:25px;display:grid;place-items:center;flex-shrink:0}.step p{font-size:11px}.step strong{font-size:12px;font-weight:500}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}th{font-weight:400;color:#7f939e;font-size:10px;letter-spacing:.5px;background:#161f23}td,th{padding:15px 22px;border-bottom:1px solid var(--border)}tr:last-child td{border-bottom:0}td small{display:block;font:10px var(--mono);margin-top:3px;overflow-wrap:anywhere}.actions{display:flex;gap:6px;flex-wrap:wrap}.actions button{padding:5px 9px;font-size:11px}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}.toolbar input{max-width:320px}.empty{padding:45px 23px;text-align:center;color:var(--muted)}.empty strong{display:block;font-size:16px;color:var(--text);font-weight:450;margin-bottom:6px}.info{padding:15px 18px;background:#172824;border:1px solid #2d4d42;color:#a5cbbd;border-radius:7px;font-size:12px;margin-bottom:20px}.notice{padding:12px 18px;border:1px solid #785147;background:#352521;color:#edb1a5;border-radius:7px;margin-bottom:20px;white-space:pre-wrap}.loading{padding:50px;text-align:center;color:var(--muted)}footer{margin:0 44px;border-top:1px solid var(--border);padding:18px 0;display:flex;gap:18px;font:9px var(--mono);color:#74868e;letter-spacing:1px}footer span:last-child{margin-left:auto}dialog{background:#192125;color:var(--text);border:1px solid #3a4c55;border-radius:12px;width:min(730px,95vw);padding:0;max-height:90vh;box-shadow:0 30px 100px #0008}dialog::backdrop{background:#000b;backdrop-filter:blur(4px)}.modal-head{padding:20px 25px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}#modal-content{padding:25px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.full{grid-column:1/-1}label{display:block;font-size:12px;color:#b5c4cb}input,select,textarea{width:100%;display:block;margin-top:7px;padding:10px 12px;background:#10181c;border:1px solid #34444c;border-radius:6px;color:var(--text);min-width:0}input:focus,select:focus,textarea:focus{border-color:var(--accent)}textarea{resize:vertical;min-height:140px;font:12px/1.7 var(--mono)}input[type=checkbox]{display:inline-block;width:auto;margin:0 9px 0 0;accent-color:var(--accent)}input[type=file]{font-size:11px}.form-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}.form-note{font-size:11px;color:var(--muted)}.error{color:var(--danger);font-size:12px;white-space:pre-wrap}.select-list{display:grid;gap:10px;margin-top:12px}.select-list label{padding:11px;background:#111b1e;border:1px solid var(--border);border-radius:6px}pre{font:11px/1.8 var(--mono);white-space:pre-wrap;word-break:break-word;padding:18px;background:#0e171b;border-radius:7px;max-height:50vh;overflow:auto}.toast{position:fixed;bottom:30px;right:30px;background:#284b3e;border:1px solid #518f72;padding:13px 22px;border-radius:8px;z-index:100;color:#d5f6e9}.login{min-height:100vh;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 20%,#24392f55,transparent 60%)}.login-card{width:min(420px,90vw);padding:36px;border:1px solid var(--border);background:#171e22;border-radius:16px}.login-card .brand-mark{margin-bottom:28px}.login-card h1{margin-top:12px}.login-card label{margin-top:28px}.login-card .primary{margin-top:20px;width:100%;display:flex;justify-content:space-between}.login-card>small{font-size:10px;display:block;margin-top:25px}.search{margin-top:0}.mono{font-family:var(--mono)}.cert-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.cert-cards .card{margin:0}.cert-cards pre{font-size:10px;margin:0}.text-muted{color:var(--muted)}.inline-form{display:flex;gap:10px;align-items:end}.inline-form label{flex:1}.inline-form button{flex-shrink:0}.divider{height:1px;background:var(--border);margin:24px 0}@media(min-width:1500px){.content{padding-top:50px}.stats{gap:24px}.stat{padding:26px}}@media(max-width:1050px){.shell{grid-template-columns:190px 1fr}.sidebar{padding:25px 12px}.brand{font-size:15px}.content{padding:30px 25px}header{padding:0 25px}.two-cols{grid-template-columns:1fr}.dependency-grid{grid-template-columns:repeat(3,1fr)}.stats{grid-template-columns:repeat(2,1fr)}.cert-cards{grid-template-columns:1fr}.sidebar-bottom strong{max-width:95px}}@media(max-width:650px){.shell{display:block}.sidebar{height:auto;position:static;padding:17px;border-right:0;border-bottom:1px solid var(--border)}.sidebar nav{display:flex;overflow:auto;margin-top:18px}.nav{width:auto;flex-shrink:0;padding:9px 13px;font-size:11px}.nav span{display:none}.workspace-label,.sidebar-bottom{display:none}header{height:60px;padding:0 18px}.header-right>span{display:none}.content{padding:26px 18px}.page-heading{align-items:start}.page-heading h1{font-size:24px}.page-heading p{font-size:12px}.page-heading .primary{padding:7px 10px;font-size:11px}.dependency-grid{grid-template-columns:repeat(2,1fr)}.stats{gap:10px}.stat{padding:15px}.stat-value{font-size:30px}.form-grid{grid-template-columns:1fr}.form-grid>*{grid-column:1}footer{margin:0 18px;font-size:8px}.header-right .subtle{margin:0}td,th{padding:12px}#modal-content{padding:18px}.inline-form{flex-wrap:wrap}}
