:root{--accent: #0F5FB8;--accent-dark: #0B4A91;--accent-soft: #E8F0FA;--accent-softer: #F5F9FE;--accent-border: #B7CFEC;--accent-disabled: #8FB2DC;--bg: #F3F4F6;--surface: #FFFFFF;--surface-2: #F7F8FA;--group: #F3F5F8;--border: #D9DCE1;--border-strong: #C4C9D1;--divider: #E3E6EA;--row: #ECEEF1;--text: #1B1F24;--text-2: #3B424D;--text-3: #4B5260;--muted: #5F6672;--disabled: #9AA0A9;--ok: #1A7F37;--ok-bg: #EAF5EE;--ok-border: #B9DEC4;--waiting: #24609F;--waiting-bg: #F5F9FE;--waiting-border: #C9DBF0;--danger: #B42318;--danger-dark: #7A1A12;--danger-bg: #FDEDEB;--danger-border: #F0C2BC;--warn: #A85200;--warn-dark: #5C2D00;--warn-bg: #FFF6EC;--warn-border: #F1D9BD;--delta-bg: #FFF3E6;--delta-fg: #8A4300;--font: "Segoe UI", system-ui, -apple-system, sans-serif;--mono: "Cascadia Mono", Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:var(--bg);font-family:var(--font);color:var(--text);font-size:14px;line-height:1.4}a{color:var(--accent)}a:hover{color:var(--accent-dark)}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:16px;height:16px;margin:0;flex:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3{margin:0;font-weight:600}h1{font-size:24px}dl,dd,p{margin:0}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.num{font-variant-numeric:tabular-nums}.grow{flex:1}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.nowrap{white-space:nowrap}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page{flex:999 1 560px;min-width:0;padding:24px 28px 32px;display:flex;flex-direction:column;gap:16px;position:relative}.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}.page-head .titles{display:flex;flex-direction:column;gap:4px}.page-sub{color:var(--muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 14px;border:1px solid var(--border-strong);border-radius:6px;background:var(--surface);color:var(--text);font-weight:600;text-decoration:none;white-space:nowrap}a.btn:hover{color:var(--text)}.btn:hover:not(:disabled){background:var(--surface-2)}.btn-primary{border:none;background:var(--accent);color:#fff}a.btn-primary:hover,.btn-primary:hover:not(:disabled){background:var(--accent-dark);color:#fff}.btn-primary:disabled{background:var(--accent-disabled);color:#fff}.btn-danger{border:none;background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:#921c13}.btn-link{border:none;background:transparent;color:var(--accent);padding:0 10px}.btn-link:hover:not(:disabled){background:transparent;color:var(--accent-dark);text-decoration:underline}.btn-quiet{border-color:var(--border);font-weight:400}.btn:disabled:not(.btn-primary){background:var(--surface-2);color:var(--disabled);border-color:var(--border)}.btn-link:disabled:not(.btn-primary){background:transparent}.btn-lg{height:40px;padding:0 18px}.btn-sm{height:30px;padding:0 10px}.btn-md{height:38px;padding:0 16px}.icon-btn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text-2)}.icon-btn:hover:not(:disabled){background:var(--surface-2)}.icon-btn:disabled{background:var(--surface-2);color:var(--disabled)}.icon-btn.danger:not(:disabled){color:var(--danger)}.icon-btn.bare{border:none;background:transparent}.chevron-btn{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-2);padding:0;flex:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px}.filters{padding:12px 16px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-3);font-weight:600;min-width:0}.field>.select,.field>.input{width:100%;min-width:0}.input,.select{height:34px;border:1px solid var(--border-strong);border-radius:6px;padding:0 8px;background:var(--surface);color:var(--text);font-size:14px;font-weight:400}.input-lg{height:38px;padding:0 12px}.input:focus,.select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 1px var(--accent)}.search{display:flex;align-items:center;gap:8px;height:34px;padding:0 10px;border:1px solid var(--border-strong);border-radius:6px;background:var(--surface);color:var(--muted)}.search:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.search input{border:none;outline:none;flex:1;min-width:0;font-size:14px;color:var(--text);background:transparent}.search input:focus-visible{outline:none}.input-error{border-color:var(--danger)!important}.field-error{color:var(--danger);font-size:12.5px;font-weight:400}.table-scroll{overflow-x:auto}.thead{font-size:12px;font-weight:600;color:var(--text-3);background:var(--surface-2);border-bottom:1px solid var(--border)}.trow{border-bottom:1px solid var(--row)}.trow:last-child{border-bottom:none}.sort-btn{display:inline-flex;align-items:center;gap:4px;border:none;background:transparent;padding:0;color:inherit;font-weight:600;text-align:left}.sort-btn.active{color:var(--accent);font-weight:700}.pager{display:flex;align-items:center;gap:12px;padding:12px 16px;color:var(--text-3);font-size:13px;flex-wrap:wrap}.pill{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:12px;font-size:12.5px;font-weight:600;white-space:nowrap;border:1px solid}.pill-ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-border)}.pill-planned{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-border)}.pill-waiting{background:var(--waiting-bg);color:var(--waiting);border-color:var(--waiting-border)}.pill-running{background:var(--accent);color:#fff;border-color:var(--accent)}.pill-failed{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.pill-offline{background:#f0f1f3;color:var(--muted);border-color:var(--border)}.tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:4px;font-size:12px;font-weight:600;white-space:nowrap}.tag-delta{background:var(--delta-bg);color:var(--delta-fg);font-family:var(--mono)}.tag-full{background:#eef1f5;color:var(--text-2)}.count-badge{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--divider);font-size:12px;font-weight:600;display:inline-flex;align-items:center;justify-content:center}.banner{display:flex;gap:12px;align-items:center;padding:14px 16px;border:1px solid;border-radius:8px}.banner .banner-text{display:flex;flex-direction:column;flex:1;gap:2px}.banner-error{border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger-dark)}.banner-error strong{color:var(--danger)}.banner-warn{border-color:var(--warn-border);background:var(--warn-bg);color:var(--warn-dark)}.banner-warn strong{color:var(--warn)}.banner-info{border-color:var(--accent-border);background:var(--accent-softer);color:var(--text-2)}.banner-info strong{color:var(--text)}.banner svg{flex:none}.empty{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;border:2px dashed var(--accent-border);border-radius:8px;background:#f8fafd;padding:24px;text-align:center}.empty.drag{border-color:var(--accent);background:var(--accent-soft)}.empty .empty-icon{width:48px;height:48px;border-radius:24px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center}.empty strong{font-size:16px;font-weight:600}.empty span{color:var(--text-3)}@keyframes dmspin{to{transform:rotate(360deg)}}.dm-spin{animation:dmspin 1.2s linear infinite;transform-origin:50% 50%}@keyframes dmshimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skel{display:block;height:12px;background:linear-gradient(90deg,#eceef1 0,#f6f7f9,#eceef1);background-size:800px 100%;animation:dmshimmer 1.4s linear infinite;border-radius:4px}.skel-pill{height:22px;width:80px;border-radius:11px}@keyframes dmstripe{to{background-position:28px 0}}.dm-stripe{background-image:linear-gradient(45deg,rgba(255,255,255,.22) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.22) 50%,rgba(255,255,255,.22) 75%,transparent 75%);background-size:28px 28px;animation:dmstripe 1s linear infinite}.progress{height:8px;border-radius:4px;background:#dce6f3;overflow:hidden}.progress>div{height:8px;background-color:var(--accent);transition:width .3s}@media(prefers-reduced-motion:reduce){.dm-spin,.skel,.dm-stripe{animation:none}}.backdrop{position:fixed;inset:0;background:#1b1f2452;z-index:40}.backdrop.light{background:#1b1f242e}.dialog-wrap{position:fixed;inset:0;z-index:41;display:flex;justify-content:center;align-items:flex-start;padding:48px 16px;overflow-y:auto}.dialog{width:100%;max-width:760px;background:var(--surface);border-radius:10px;box-shadow:0 20px 48px #1b1f243d;display:flex;flex-direction:column}.dialog-sm{max-width:480px}.dialog-head{display:flex;align-items:flex-start;gap:12px;padding:20px 24px 16px;border-bottom:1px solid var(--divider)}.dialog-head h2{font-size:20px}.dialog-body{padding:20px 24px;display:flex;flex-direction:column;gap:16px}.dialog-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 24px;border-top:1px solid var(--divider);flex-wrap:wrap}.popover{position:absolute;z-index:30;width:320px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #1b1f2424;padding:12px;display:flex;flex-direction:column;gap:6px}.menu-item{text-align:left;min-height:32px;padding:0 10px;border:none;border-radius:6px;background:transparent;color:var(--text)}.menu-item:hover:not(:disabled),.menu-item.active{background:var(--accent-soft);color:var(--accent)}.menu-item.action{color:var(--accent);font-weight:600}.menu-item.danger{color:var(--danger)}.menu-item:disabled{color:var(--disabled)}.menu-group{font-size:12px;font-weight:600;color:var(--muted);padding:4px 4px 0}.menu-sep{height:1px;background:var(--divider);margin:2px 0}.dm-tip{position:fixed;z-index:100;background:var(--text);color:#fff;font-size:12.5px;padding:8px 10px;border-radius:6px;max-width:280px;box-shadow:0 6px 16px #1b1f2433;pointer-events:none;line-height:1.35}.log{margin:0;padding:10px 12px;background:var(--surface-2);border:1px solid var(--divider);border-radius:6px;font-family:var(--mono);font-size:12px;line-height:1.6;color:var(--text-2);white-space:pre-wrap;max-height:320px;overflow:auto}.checks{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:8px}.checks li{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 14px;border-bottom:1px solid var(--row)}.checks li:last-child{border-bottom:none}.checks .check-text{display:flex;flex-direction:column;gap:1px}.checks .check-note{font-size:12.5px;color:var(--text-3)}.checks .check-value{font-family:var(--mono);font-size:12px;color:var(--text-3);text-align:right;overflow-wrap:anywhere}.checks li.lvl-info{background:var(--accent-softer)}.checks li.lvl-info .check-label{font-weight:600}.checks li.lvl-warn{background:#fffbf5}.checks li.lvl-warn .check-label{font-weight:600}.checks li.lvl-warn .check-note{color:var(--warn-dark)}.checks li.lvl-error{background:#fff8f7}.checks li.lvl-error .check-label{font-weight:600}.checks li.lvl-error .check-note{color:var(--danger-dark)}.checks li.lvl-pending .check-label{color:var(--muted)}
