:root{--gray-50:#f9fafb;--gray-100:#f3f4f6;--gray-200:#e5e7eb;--gray-300:#d0d5dd;--gray-400:#9ca3af;--gray-500:#6b7280;--gray-600:#4b5563;--gray-700:#374151;--gray-800:#1f2937;--gray-900:#111827;--surface:#fff;--page-bg:#f6f7f9;--border:var(--gray-300);--border-subtle:var(--gray-200);--text:var(--gray-900);--text-muted:var(--gray-500);--primary:#2563eb;--primary-hover:#1d4ed8;--primary-soft:#eef2ff;--success:#16a34a;--success-soft:#dcfce7;--success-text:#166534;--warn:#f59e0b;--warn-soft:#fef3c7;--warn-text:#92400e;--danger:#dc2626;--danger-soft:#fee2e2;--danger-text:#991b1b;--danger-hover:#b91c1c;--info-soft:#dbeafe;--info-text:#1e40af;--select:#fde047;--select-strong:#facc15;--select-soft:#fef08a;--select-border:#ca8a04;--focus:#2563eb;--radius-sm:4px;--radius:6px;--radius-lg:10px;--shadow-sm:0 1px 2px #1018280f, 0 1px 3px #1018281a;--shadow-md:0 4px 8px -2px #1018281a, 0 12px 24px -4px #10182824;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--font:system-ui, -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-xs:11px;--fs-sm:12px;--fs-md:14px;--fs-lg:16px;--fs-xl:20px;--app-header-h:48px;--control-h:32px;--control-h-sm:26px;--bd:var(--border);--bg:var(--page-bg);--pri:var(--primary);--ok:var(--success);--bad:var(--danger)}*{box-sizing:border-box}body{font:var(--fs-md)/1.5 var(--font);background:var(--page-bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;line-height:1.3}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}button,.btn{justify-content:center;align-items:center;gap:var(--sp-1);min-height:var(--control-h);padding:0 var(--sp-3);font:inherit;white-space:nowrap;color:var(--gray-700);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}button:hover:not(:disabled),.btn:hover:not(:disabled){background:var(--gray-50);border-color:var(--gray-400);text-decoration:none}button:disabled,.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--surface);color:var(--gray-700);border-color:var(--border)}.btn-primary,button.primary,.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover:not(:disabled),button.primary:hover:not(:disabled),.btn.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-ghost{color:var(--gray-700);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--gray-100);border-color:#0000}.btn-danger{background:var(--surface);color:var(--danger);border-color:#fca5a5}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff;border-color:var(--danger)}.btn-sm{min-height:var(--control-h-sm);padding:0 var(--sp-2);font-size:var(--fs-sm)}.btn-icon{width:var(--control-h);padding:0}.btn-icon.btn-sm{width:var(--control-h-sm)}button.active{background:var(--primary-soft);color:var(--primary);border-color:#c7d2fe}button.link{min-height:0;padding:0 var(--sp-1);color:var(--primary);background:0 0;border:0;font-weight:400}button.link:hover:not(:disabled){background:0 0;text-decoration:underline}input,select,textarea,.input,.select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:4px var(--sp-2)}.input,.select,select,input:not([type=checkbox]):not([type=radio]):not([type=file]){min-height:var(--control-h)}input[type=file]{padding:3px var(--sp-1)}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px #2563eb33}input:disabled,select:disabled,textarea:disabled{background:var(--gray-100);color:var(--text-muted)}.input,.select{width:100%}.input[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--danger)}.search{background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-4-4'/%3E%3C/svg%3E") no-repeat 9px center;padding-left:28px}.field{gap:var(--sp-1);flex-direction:column;min-width:0;display:flex}.field-label{font-size:var(--fs-sm);color:var(--gray-700);font-weight:600}.field-hint{font-size:var(--fs-sm);color:var(--text-muted)}.field .error{font-size:var(--fs-sm)}.chip,.badge{align-items:center;gap:var(--sp-1);max-width:100%;padding:1px var(--sp-2);font-size:var(--fs-xs);white-space:nowrap;background:var(--gray-100);color:var(--gray-700);border:1px solid #0000;border-radius:999px;font-weight:500;line-height:16px;display:inline-flex}.chip{border-color:var(--border-subtle)}.chip-neutral,.chip.archived,.chip.none,.badge.archived{background:var(--gray-100);color:var(--gray-700);border-color:var(--border-subtle)}.chip-info{background:var(--info-soft);color:var(--info-text);border-color:#bfdbfe}.chip-success,.chip.published,.chip.accepted,.chip.done,.chip.analyzed,.badge.published,.badge.accepted,.badge.done{background:var(--success-soft);color:var(--success-text);border-color:#bbf7d0}.chip-warn,.chip.draft,.chip.pending,.chip.running,.badge.draft,.badge.pending,.badge.running{background:var(--warn-soft);color:var(--warn-text);border-color:#fde68a}.chip-danger,.chip.failed,.chip.rejected,.badge.failed,.badge.rejected{background:var(--danger-soft);color:var(--danger-text);border-color:#fecaca}.chip.mono,.chip-mono{font-family:var(--font-mono);word-break:normal}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card:not(:has(>.card-body,>.card-header)){padding:var(--sp-3)}.card-header{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;font-weight:600;display:flex}.card-body{padding:var(--sp-3)}.card.pending{border-left:4px solid var(--warn)}.card.accepted{border-left:4px solid var(--success)}.card.rejected{border-left:4px solid var(--danger)}.toolbar{align-items:center;gap:var(--sp-2);flex-wrap:wrap;min-width:0;display:flex}.toolbar-spacer,.spacer{flex:1}.app-header,.topbar{align-items:center;gap:var(--sp-3);height:var(--app-header-h);padding:0 var(--sp-4);background:var(--gray-900);color:#fff;border-bottom:1px solid #000;display:flex}.app-header a,.topbar a{color:#fff;font-weight:600}.app-header .muted,.topbar .muted{color:var(--gray-400)}.app-header button,.topbar button{color:#e5e7eb;border-color:var(--gray-600);background:0 0}.app-header button:hover:not(:disabled),.topbar button:hover:not(:disabled){background:var(--gray-800);border-color:var(--gray-400)}.app-title{font-size:var(--fs-lg);color:#fff;font-weight:600}.logo-login{mix-blend-mode:multiply;width:180px;height:auto}.logo-topbar{border-radius:var(--radius-sm);background:#fff;width:auto;height:28px;padding:2px 6px}.page-header{justify-content:space-between;align-items:flex-end;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;display:flex}.page-header h1,.page-title{font-size:var(--fs-xl);align-items:center;gap:var(--sp-2);flex-wrap:wrap;font-weight:600;display:flex}.breadcrumb{font-size:var(--fs-sm);color:var(--text-muted);flex-wrap:wrap;align-items:center;margin-bottom:2px;display:flex}.breadcrumb>*+:before{content:"/";color:var(--gray-400);margin:0 6px}.breadcrumb a{color:var(--text-muted)}.breadcrumb a:hover{color:var(--primary)}.workbench{height:calc(100vh - var(--app-header-h) - var(--workbench-offset,0px));grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.screen{height:calc(100vh - var(--app-header-h));flex-direction:column;display:flex;overflow:hidden}.screen>.workbench{flex:1;height:auto}.pane{background:var(--surface);min-width:0;min-height:0;position:relative;overflow:auto}.pane+.pane{border-left:1px solid var(--border)}.pane-muted{background:var(--gray-200)}.pane-toolbar{z-index:3;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;display:flex;position:sticky;top:0;left:0}table{border-collapse:collapse;background:var(--surface);width:100%}th,td{text-align:left;padding:6px var(--sp-2);border-bottom:1px solid var(--border-subtle);vertical-align:top}.table{border:1px solid var(--border);border-radius:var(--radius-lg);border-collapse:separate;border-spacing:0;overflow:hidden}.table th{background:var(--gray-50);font-size:var(--fs-sm);color:var(--text-muted);white-space:nowrap;font-weight:600}.table td,.table th{padding:6px var(--sp-3)}.table tr:last-child td{border-bottom:0}.row-clickable,tr.clickable{cursor:pointer}.row-clickable:hover td,tr.clickable:hover td{background:var(--gray-50)}.row-selected td,.row-selected:hover td,tr.sel td,tr.sel:hover td{background:var(--select-soft)}.empty{padding:var(--sp-8) var(--sp-4);text-align:center;color:var(--text-muted)}.empty strong{color:var(--text);font-size:var(--fs-lg);margin-bottom:var(--sp-1);display:block}dialog.dialog{border:1px solid var(--border);border-radius:var(--radius-lg);width:min(480px,100vw - 32px);max-height:calc(100vh - 64px);box-shadow:var(--shadow-md);background:var(--surface);color:var(--text);padding:0}dialog.dialog::backdrop{background:#11182773}.dialog-header{padding:var(--sp-4) var(--sp-4) var(--sp-2);font-size:var(--fs-lg);font-weight:600}.dialog-body{gap:var(--sp-3);padding:var(--sp-2) var(--sp-4) var(--sp-4);flex-direction:column;display:flex}.dialog-footer{justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);background:var(--gray-50);border-top:1px solid var(--border-subtle);display:flex}.segmented,.tabs{background:var(--gray-100);border:1px solid var(--border-subtle);border-radius:var(--radius);gap:2px;padding:2px;display:inline-flex}.segmented>button,.tabs>button{min-height:var(--control-h-sm);padding:0 var(--sp-3);color:var(--gray-600);border-radius:var(--radius-sm);font-size:var(--fs-sm);background:0 0;border:0}.segmented>button:hover:not(:disabled):not(.active,[aria-pressed=true],[aria-selected=true]),.tabs>button:hover:not(:disabled):not(.active){background:#fff9}.segmented>button.active,.segmented>button[aria-pressed=true],.segmented>button[aria-selected=true],.tabs>button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.segmented .count{background:var(--gray-200);color:var(--gray-600);font-size:var(--fs-xs);border-radius:999px;padding:0 5px;line-height:16px}.segmented>.active .count,.segmented>[aria-pressed=true] .count{background:var(--primary-soft);color:var(--primary)}.legend{align-items:center;gap:var(--sp-1) var(--sp-3);font-size:var(--fs-sm);color:var(--text-muted);flex-wrap:wrap;display:flex}.legend-item{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.legend .box{cursor:default;border-radius:2px;width:12px;height:12px;display:inline-block;position:static}.spinner{border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;flex:none;width:16px;height:16px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.banner{padding:var(--sp-2) var(--sp-4);background:var(--info-soft);color:var(--info-text);border-bottom:1px solid #bfdbfe;margin:0}.banner-warn{background:var(--warn-soft);color:var(--warn-text);border-color:#fde68a}.banner-danger,.banner.error{color:var(--danger-text);background:#fef2f2;border-color:#fecaca}.muted{color:var(--text-muted)}.small{font-size:var(--fs-sm)}.mono{font-family:var(--font-mono);word-break:break-all}.error{color:var(--danger)}.ok{color:var(--success)}.pdf-scroll{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3);flex-direction:column;display:flex}.pdf-page{box-shadow:var(--shadow-sm), 0 0 0 1px #0000000a;background:#fff;margin-inline:auto;position:relative}.pdf-page canvas{display:block}.box{border:1px solid var(--gray-400);cursor:pointer;background:#9ca3af26;position:absolute}.box.pending{border-color:var(--warn);background:#f59e0b4d}.box.accepted{border-color:var(--success);background:#16a34a40}.box.rejected{border-color:var(--danger);background:#dc262633}.box.selected{border:2px solid var(--select-border);outline-offset:1px;z-index:1;background:#facc1599;outline:3px solid #facc1599}@media (prefers-reduced-motion:no-preference){button,.btn,input,select,textarea,.chip,.box,td,.segmented>button{transition:background-color .12s,border-color .12s,box-shadow .12s,color .12s}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}.center{justify-content:center;align-items:center;gap:var(--sp-3);flex-direction:column;height:100vh;display:flex}.page{max-width:1100px;padding:var(--sp-4);margin:0 auto}.page table{margin-bottom:var(--sp-3)}.row{gap:var(--sp-2);margin:var(--sp-2) 0;flex-wrap:wrap;align-items:center;display:flex}details{background:var(--surface);padding:var(--sp-1) var(--sp-2);border:1px solid var(--border);border-radius:var(--radius);margin:6px 0}.editor{height:calc(100vh - var(--app-header-h));flex-direction:column;display:flex}.editor>.toolbar{padding:var(--sp-2) var(--sp-4);background:var(--surface);border-bottom:1px solid var(--border)}.split{flex:1;min-height:0;display:flex}.left{padding:var(--sp-2);flex:1;overflow:auto}.right{background:var(--surface);border-left:1px solid var(--border);width:400px;padding:var(--sp-2) var(--sp-3);overflow:auto}.right .card{margin:var(--sp-2) 0}.field-split{gap:var(--sp-3);padding:0 var(--sp-4) var(--sp-4);height:calc(100vh - var(--app-header-h));display:flex}.field-split .fields{flex:1;min-width:420px;overflow:auto}.field-split .pdf-pane{background:var(--gray-200);max-width:62%;padding:var(--sp-2);border:1px solid var(--border);flex:0 auto;overflow:auto}.queue,.picker-list{border:1px solid var(--border);border-radius:var(--radius-sm);max-height:180px;margin:0;padding:0;list-style:none;overflow:auto}.queue li,.picker-list li{cursor:pointer;border-bottom:1px solid var(--gray-100);padding:3px 6px}.queue li.sel,.queue li:hover,.picker-list li:hover{background:var(--primary-soft)}.queue .low{color:var(--danger);font-weight:600}.rule-editor dl{gap:2px var(--sp-2);margin:0 0 var(--sp-2);grid-template-columns:56px 1fr;display:grid}.rule-editor dt{color:var(--text-muted)}.rule-editor dd{margin:0}.form{gap:var(--sp-2);flex-direction:column;display:flex}.form label{flex-direction:column;gap:2px;display:flex}.form textarea.mono{resize:vertical;width:100%}.picker{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:6px;padding:6px;display:flex}.picker-list{max-height:240px}.picker-list li.picker-group{cursor:default;background:var(--gray-100);font-weight:600}.tree-children{padding-left:var(--sp-4);margin:0;list-style:none}.tree-item{list-style:none}.tree-row{padding:1px 0}.tree-gap{width:22px;display:inline-block}.pick{cursor:pointer}.pick:hover{background:var(--primary-soft)}.preview{padding:var(--sp-3) var(--sp-4)}.preview-body{gap:var(--sp-3);grid-template-columns:2fr 1fr;display:grid}.preview iframe{border:1px solid var(--border);border-radius:var(--radius);width:100%;height:calc(100vh - 220px)}.prefill{margin-bottom:var(--sp-4);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border)}.prefill-table{border-collapse:collapse;width:100%;margin:var(--sp-2) 0}.prefill-table th,.prefill-table td{border-bottom:1px solid var(--border);padding:var(--sp-1) var(--sp-2);text-align:left;vertical-align:top}.prefill-table tr.conflict{color:var(--danger);background:#dc26261f}.cond-trace{margin:0 0 var(--sp-2);padding-left:var(--sp-2);list-style:none}.templates-body{padding:var(--sp-4) var(--sp-6)}.templates-body .banner{margin-bottom:var(--sp-3)}.upload-dialog form{display:contents}.detail-toolbar{padding:var(--sp-2) var(--sp-4);background:var(--surface);border-bottom:1px solid var(--border-subtle)}.detail-version{width:auto;min-width:240px}.detail-workbench{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.detail-left{flex-direction:column;display:flex;overflow:hidden}.detail-list{flex:1;min-height:0;overflow:auto}.detail-filters .search{flex:160px;min-width:0}.detail-group>summary{z-index:2;padding:6px var(--sp-3);background:var(--gray-50);border-bottom:1px solid var(--border-subtle);cursor:pointer;font-weight:600;position:sticky;top:0}.detail-row{align-items:center;gap:var(--sp-2);padding:6px var(--sp-3);border-bottom:1px solid var(--border-subtle);cursor:pointer;scroll-margin-top:40px;display:flex}.detail-row:hover{background:var(--gray-50)}.detail-row.row-selected{background:var(--select-soft)}.detail-row-main{overflow-wrap:anywhere;flex:1;min-width:0}.btn.disabled{pointer-events:none}.detail-group{background:0 0;border:0;border-radius:0;margin:0;padding:0}.editor-screen .workbench{grid-template-columns:minmax(0,1fr) 420px}.editor-side{gap:var(--sp-3);padding:var(--sp-3);background:var(--page-bg);flex-direction:column;display:flex}.editor-side .card-header{gap:var(--sp-2)}.editor-side .queue{border:0;border-radius:0;max-height:200px}.editor-side .queue li{gap:var(--sp-2);align-items:baseline;display:flex}.editor-side .queue li.sel{background:var(--select-soft)}.editor-side .queue .low{color:var(--danger-text);font-weight:600}.editor-side .queue .conf{font-variant-numeric:tabular-nums;min-width:36px}.dirty-dot{background:var(--warn);border-radius:50%;width:8px;height:8px;margin-left:6px;display:inline-block}.rule-meta{gap:2px var(--sp-2);margin:0 0 var(--sp-3);font-size:var(--fs-sm);grid-template-columns:64px 1fr;display:grid}.rule-meta dt{color:var(--text-muted)}.rule-meta dd{overflow-wrap:anywhere;margin:0}.rule-form{gap:var(--sp-3);flex-direction:column;display:flex}.rule-form textarea{width:100%;font-family:var(--font-mono)}.picker-box{gap:var(--sp-2);flex-direction:column;display:flex}.picker-box .picker-list{max-height:240px}.picker-box .picker-list li small{display:block}.picker-box .picker-group{position:sticky;top:0}.preview-pane{padding:var(--sp-4);gap:var(--sp-4);flex-direction:column;display:flex}.preview-pane .preview-body{gap:var(--sp-4);grid-template-columns:2fr 1fr;display:grid}.preview-pane iframe{border:1px solid var(--border);border-radius:var(--radius);width:100%;height:calc(100vh - 260px)}.try-form{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.try-form .input{width:240px}.try-form label{font-size:var(--fs-sm);align-items:center;gap:4px;display:inline-flex}.table tr.conflict td{background:var(--danger-soft)}.trace{margin:0 0 var(--sp-2);flex-direction:column;gap:2px;padding:0;list-style:none;display:flex}.trace li{gap:var(--sp-2);align-items:baseline;display:flex}@media (width<=1100px){.editor-screen .workbench{grid-template-columns:minmax(0,1fr) 340px}.preview-pane .preview-body{grid-template-columns:1fr}}.editor-screen>.pane{flex:1}.editor-side .card-body .card p{margin:0 0 var(--sp-2)}.login-card{align-items:center;gap:var(--sp-3);width:360px;max-width:calc(100vw - 32px);padding:var(--sp-8) var(--sp-6);text-align:center;flex-direction:column;display:flex}.login-card h1{font-size:var(--fs-xl);margin:0}.login-card p{font-size:var(--fs-sm);margin:0}.app-header .user{color:var(--gray-300);font-size:var(--fs-sm)}
