:root{--primary:#2f6feb;--primary-hover:#4d86f1;--primary-soft:#2f6feb14;--bg:#f5f7fa;--card:#fff;--border:#e6eaf2;--text:#1f2733;--text-2:#5b6472;--text-3:#8a93a3;--radius:12px;--shadow:0 1px 2px #0f172a0a, 0 6px 20px #0f172a0d}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.6}#app{min-height:100vh}a{color:var(--primary);text-decoration:none}.mono{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.muted{color:var(--text-3)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.card-title{color:var(--text);margin:0;font-size:16px;font-weight:600}.card-sub{color:var(--text-3);margin:4px 0 0;font-size:13px}.card-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.layout{min-height:100vh;display:flex}.sidebar{border-right:1px solid var(--border);z-index:40;background:#fff;flex-direction:column;width:240px;transition:transform .22s;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-logo{align-items:center;gap:12px;padding:20px 20px 18px;display:flex}.logo-mark{background:linear-gradient(135deg,#2f6feb,#5b8ff9);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;display:flex;box-shadow:0 4px 12px #2f6feb59}.logo-text{flex-direction:column;min-width:0;display:flex}.logo-name{color:var(--text);letter-spacing:.02em;white-space:nowrap;font-size:15px;font-weight:700}.logo-desc{color:var(--text-3);white-space:nowrap;font-size:11px}.sidebar-nav{flex:1;padding:8px 12px;overflow-y:auto}.nav-label{color:var(--text-3);letter-spacing:.08em;padding:12px 10px 6px;font-size:11px}.nav-item{color:var(--text-2);border-radius:8px;align-items:center;gap:10px;margin-bottom:4px;padding:10px 12px;font-size:14px;transition:background .15s,color .15s;display:flex}.nav-item svg{flex-shrink:0}.nav-item:hover{color:var(--text);background:#f1f4f9}.nav-item.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.sidebar-foot{border-top:1px solid var(--border);padding:14px 16px}.sidebar-foot .nav-item{cursor:pointer;margin-bottom:0}.main{flex-direction:column;flex:1;min-width:0;margin-left:240px;display:flex}.topbar{z-index:30;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);background:#ffffffeb;align-items:center;gap:14px;height:60px;padding:0 24px;display:flex;position:sticky;top:0}.topbar h1{margin:0;font-size:16px;font-weight:600}.topbar-badge{color:var(--primary);background:var(--primary-soft);border:1px solid #2f6feb40;border-radius:999px;padding:2px 10px;font-size:12px}.hamburger{border:1px solid var(--border);cursor:pointer;width:34px;height:34px;color:var(--text-2);background:#fff;border-radius:8px;justify-content:center;align-items:center;padding:0;display:none}.content{flex:1;padding:24px}.content-inner{flex-direction:column;gap:20px;max-width:1200px;margin:0 auto;display:flex}.backdrop{display:none}.stat-grid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);justify-content:space-between;align-items:center;gap:12px;padding:20px;display:flex}.stat-label{color:var(--text-3);font-size:13px}.stat-value{font-variant-numeric:tabular-nums;margin-top:6px;font-size:28px;font-weight:700;line-height:1.2}.stat-value.danger{color:#e11d48}.stat-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.preview-stage{border:1px dashed var(--border);background:#eef1f7;border-radius:10px;width:100%;height:320px;position:relative;overflow:hidden}.preview-stage img{object-fit:cover;width:100%;height:100%;display:block}.preview-empty{height:100%;color:var(--text-3);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex}.preview-meta{flex-wrap:wrap;align-items:center;gap:10px 18px;margin-top:16px;display:flex}.meta-chip{color:var(--text-2);border:1px solid var(--border);background:#f4f6fa;border-radius:8px;align-items:center;gap:6px;padding:5px 12px;font-size:13px;display:inline-flex}.meta-chip b{color:var(--text);font-weight:600}.meta-chip .mono{font-size:12px}.wall{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;display:grid}.wall-item{aspect-ratio:1;border:1px solid var(--border);background:#eef1f7;border-radius:10px;position:relative;overflow:hidden}.wall-item img{object-fit:cover;width:100%;height:100%;transition:transform .25s;display:block}.wall-item:hover img{transform:scale(1.05)}.wall-badge{text-overflow:ellipsis;white-space:nowrap;color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172aad;border-radius:999px;max-width:calc(100% - 16px);padding:2px 10px;font-size:11px;position:absolute;bottom:8px;left:8px;overflow:hidden}.empty-hint{text-align:center;color:var(--text-3);padding:40px 0;font-size:13px}.table-wrap{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;min-width:860px}.data-table th{text-align:left;color:var(--text-3);border-bottom:1px solid var(--border);white-space:nowrap;background:#f8fafc;padding:10px 14px;font-size:12px;font-weight:600}.data-table td{vertical-align:middle;border-bottom:1px solid #f0f2f7;padding:14px;font-size:14px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:#fafbfe}.src-name{color:var(--text);font-weight:600}.src-id{color:var(--text-3);margin-top:2px;font-size:11px}.ops{align-items:center;gap:4px;display:flex}.latency-ok{color:#16a34a;font-size:13px;font-weight:600}.latency-fail{color:#e11d48;font-size:13px}.latency-idle{color:var(--text-3);font-size:13px}.form-grid{flex-direction:column;gap:16px;display:flex}.form-item{flex-direction:column;gap:6px;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.form-row-3{grid-template-columns:120px 1fr 120px;align-items:end;gap:16px;display:grid}.form-label{color:var(--text-2);font-size:13px;font-weight:600}.req{color:#e11d48;margin-left:2px}.form-hint{color:var(--text-3);font-size:12px}.modal-footer{justify-content:flex-end;gap:10px;display:flex}.code-block{background:#0f172a;border-radius:10px;overflow:hidden}.code-head{color:#94a3b8;background:#16213a;justify-content:space-between;align-items:center;padding:8px 14px;font-size:12px;display:flex}.code-block pre{color:#e2e8f0;margin:0;padding:16px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.7;overflow-x:auto}.param-table{border-collapse:collapse;width:100%}.param-table th{text-align:left;color:var(--text-3);border-bottom:1px solid var(--border);background:#f8fafc;padding:10px 14px;font-size:12px}.param-table td{vertical-align:top;border-bottom:1px solid #f0f2f7;padding:12px 14px;font-size:13px}.param-table tr:last-child td{border-bottom:none}.param-name{color:var(--primary);font-family:SFMono-Regular,Consolas,Menlo,monospace;font-weight:600}.login-page{background:radial-gradient(1000px 500px at 15% -10%, #2f6feb1f, transparent 60%), radial-gradient(800px 400px at 95% 110%, #2f6feb1a, transparent 60%), var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{border:1px solid var(--border);background:#fff;border-radius:16px;width:100%;max-width:400px;padding:36px 32px 32px;box-shadow:0 20px 50px #0f172a14}.login-brand{text-align:center;flex-direction:column;align-items:center;gap:12px;margin-bottom:26px;display:flex}.login-brand .logo-mark{border-radius:14px;width:48px;height:48px}.login-title{margin:0;font-size:18px;font-weight:700}.login-sub{color:var(--text-3);margin:0;font-size:13px}@media (width<=1024px){.stat-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=768px){.sidebar{box-shadow:none;transform:translate(-100%)}.sidebar.open{transform:translate(0);box-shadow:0 0 40px #0f172a33}.main{margin-left:0}.hamburger{display:inline-flex}.backdrop.show{z-index:35;background:#0f172a66;display:block;position:fixed;inset:0}.content{padding:16px}.form-row,.form-row-3{grid-template-columns:1fr}.wall{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}@media (width<=480px){.stat-grid{grid-template-columns:1fr}}
