:root{font-family:-apple-system,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;--artboard-ink: #111111;--artboard-editor-bg: rgba(255, 255, 255, .96);--bg: #0f1115;--bg-panel: #161a21;--bg-panel-2: #1c212b;--bg-hover: #232a36;--bg-inset: #0b0d11;--border: #2a313d;--border-strong: #3a4350;--text: #e6e9ee;--text-dim: #9aa4b2;--text-faint: #6b7482;--accent: #4f8cff;--accent-dim: #2c4d8f;--ready: #34c07c;--ready-bg: rgba(52, 192, 124, .12);--preview: #e8a33d;--preview-bg: rgba(232, 163, 61, .12);--blocked: #e5534b;--blocked-bg: rgba(229, 83, 75, .12);--info: #58a6ff;--info-bg: rgba(88, 166, 255, .12);--mono: "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--radius: 8px;--sidebar-w: 216px;--topbar-h: 52px}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.6 -apple-system,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:5px;border:2px solid var(--bg)}::-webkit-scrollbar-track{background:transparent}button,button.primary{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:6px;padding:6px 14px;cursor:pointer;font-size:13px;font-family:inherit;white-space:nowrap}button:hover:not(:disabled),button.primary:hover:not(:disabled){filter:brightness(1.1)}button:disabled{background:var(--accent-dim);border-color:var(--accent-dim);color:var(--text-faint);cursor:not-allowed;filter:none}input,textarea,select{border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:13px;width:100%;max-width:100%;box-sizing:border-box;background:var(--bg-inset);color:var(--text);font-family:inherit;outline:none}input:focus,textarea:focus,select:focus{border-color:var(--accent)}.error{color:var(--blocked)}.page-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:18px;flex-wrap:wrap}.page-head h1{font-size:19px;font-weight:700;margin:0}.page-head .sub{color:var(--text-dim);font-size:12.5px;margin-top:2px}.page-head .actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px}.panel>.panel-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);font-weight:600;font-size:13.5px}.panel>.panel-head .spacer{flex:1}.panel>.panel-body{padding:14px 16px}.panel>.panel-body.flush{padding:0}button.secondary,button.mini,button.ghost{background:var(--bg-panel-2);color:var(--text);border:1px solid var(--border-strong);filter:none}button.ghost{background:transparent;border-color:transparent;color:var(--text-dim)}button.secondary:hover:not(:disabled),button.mini:hover:not(:disabled){background:var(--bg-hover);filter:none}button.ghost:hover:not(:disabled){color:var(--text);background:var(--bg-hover);filter:none}button.mini{padding:3px 10px;font-size:12px}button.danger{color:var(--blocked);border-color:var(--blocked);background:transparent;filter:none}button.danger:hover:not(:disabled){background:var(--blocked-bg);filter:none}.card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:12px;color:var(--text)}.hint{color:var(--text-dim);font-size:13px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.page{padding:20px}@media (max-width: 720px){.page{padding:12px}}code{font-family:var(--mono)}.spacer{flex:1}.dim{color:var(--text-dim)}.faint{color:var(--text-faint)}.small{font-size:12px}.mono{font-family:var(--mono);font-size:12px}.badge{display:inline-flex;align-items:center;gap:5px;padding:1px 8px;border-radius:10px;font-size:11.5px;font-weight:600;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge.ready{color:var(--ready);background:var(--ready-bg)}.badge.preview,.badge.preview_only{color:var(--preview);background:var(--preview-bg)}.badge.blocked{color:var(--blocked);background:var(--blocked-bg)}.badge.info{color:var(--info);background:var(--info-bg)}.badge.neutral,.badge.unplanned,.badge.unknown{color:var(--text-dim);background:var(--bg-hover)}.badge.accent{color:var(--accent);background:var(--info-bg)}.chip{font-family:var(--mono);font-size:11.5px;color:var(--text-dim);background:var(--bg-inset);border:1px solid var(--border);border-radius:5px;padding:1px 7px;white-space:nowrap}.tag{display:inline-block;padding:0 7px;border-radius:4px;font-size:11px;background:var(--bg-hover);color:var(--text-dim);border:1px solid var(--border);white-space:nowrap}.table,table.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;padding:10px 14px;color:var(--text-faint);font-weight:500;font-size:12px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:13px 14px;border-bottom:1px solid var(--border);vertical-align:middle;line-height:1.55}.table tr:last-child td{border-bottom:none}.table tbody tr:hover{background:var(--bg-hover)}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap}button.tab,.tab{padding:7px 14px;font-size:13px;color:var(--text-dim);cursor:pointer;background:transparent;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;border-radius:0;filter:none;font-weight:400}button.tab:hover,.tab:hover{color:var(--text);filter:none;background:transparent}button.tab.active,.tab.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600;background:transparent;filter:none}.split{display:flex;gap:16px;align-items:flex-start}.split .col-side{width:300px;flex:none;min-width:0}.split .col-main{flex:1;min-width:0}.list-row{padding:10px 14px;border-bottom:1px solid var(--border);cursor:pointer;display:flex;align-items:center;gap:10px;font-size:13px}.list-row:last-child{border-bottom:none}.list-row:hover{background:var(--bg-hover)}.list-row.active{background:var(--accent-dim);color:#fff}.list-row.active .dim,.list-row.active .faint{color:#fff}.quota{height:6px;border-radius:3px;background:var(--bg-inset);overflow:hidden}.quota>i,.quota-fill{display:block;height:100%;border-radius:3px;background:var(--accent)}.quota>i.warn,.quota-fill.near{background:var(--preview)}.banner{display:flex;gap:10px;align-items:flex-start;padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:16px;border:1px solid}.banner.warn{background:var(--preview-bg);border-color:var(--preview);color:var(--preview)}.banner.err{background:var(--blocked-bg);border-color:var(--blocked);color:var(--blocked)}.banner.info{background:var(--info-bg);border-color:var(--info);color:var(--info)}.banner.ok{background:var(--ready-bg);border-color:var(--ready);color:var(--ready)}.empty{padding:40px 20px;text-align:center;color:var(--text-faint);font-size:13px}.grid{display:grid;gap:14px}.grid.cols-3{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid .card{cursor:pointer;transition:border-color .15s,transform .15s;margin-bottom:0}.grid .card:hover{border-color:var(--accent-dim);transform:translateY(-1px)}.grid .card h3{font-size:14.5px;margin:0 0 4px}.grid .card .meta{color:var(--text-faint);font-size:12px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#000000a6}.modal{width:560px;max-width:100%;max-height:84vh;overflow-y:auto;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:10px;box-shadow:0 20px 60px #00000080}.modal .modal-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--border);font-weight:700;font-size:15px}.modal .modal-body{padding:16px 18px}.modal .modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--border)}.field{margin-bottom:12px}.field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:4px}.kv{display:grid;grid-template-columns:150px 1fr;row-gap:7px;column-gap:14px;font-size:13px}.kv dt{color:var(--text-faint)}.kv dd{color:var(--text);word-break:break-all;margin:0}.thumb{border-radius:6px;background:var(--bg-inset);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text-faint);font-size:11px;flex:none;overflow:hidden}
