:root{--bg: #f1efea;--panel: #ffffff;--panel-2: #f7f5f1;--panel-3: #edeae3;--border: #e3dfd7;--border-strong: #c9c4b9;--text: #1f1e1c;--muted: #6d6a63;--faint: #9a968d;--accent: #1d4e6f;--accent-soft: #e9eef2;--accent-line: #35708f;--accent-2: #3d7068;--ok: #2f6b46;--ok-soft: #e9f0ea;--warn: #8a5a10;--warn-soft: #f6eedd;--err: #9d332c;--err-soft: #f7e9e7;--ink: #23272b;--navy: #23272b;--navy-2: #2c3137;--radius: 10px;--radius-s: 6px;--shadow: 0 1px 0 rgba(31, 30, 28, .04);--shadow-pop: 0 8px 26px rgba(31, 30, 28, .16), 0 1px 3px rgba(31, 30, 28, .1)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);font-size:14px;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}code,kbd{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#cdc8be;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#b3ada1}::-webkit-scrollbar-track{background:transparent}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border-strong);background:var(--panel);padding:6px 13px;border-radius:var(--radius-s);cursor:pointer;font-weight:500;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.btn:hover{border-color:var(--border-strong);background:var(--panel-2);color:var(--text)}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:#16405c;border-color:#16405c;color:#fff}.btn-ghost{border-color:transparent;background:transparent;color:var(--muted)}.btn-ghost:hover{background:var(--panel-2);border-color:transparent;color:var(--text)}.btn-sm{padding:4px 9px;font-size:12.5px}.btn-danger{color:var(--err)}.btn-danger:hover{color:var(--err);border-color:var(--err);background:var(--err-soft)}.input,select.input,textarea.input{width:100%;padding:6px 9px;border:1px solid var(--border-strong);border-radius:var(--radius-s);background:var(--panel);outline:none;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #1d4e6f29}.input::placeholder{color:var(--faint)}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.field>span{font-size:12px;color:var(--muted);font-weight:500}.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:3px;font-size:12px;font-weight:500}.shell-header{height:52px;padding:0 18px;display:flex;align-items:center;gap:26px;background:var(--ink);border-bottom:1px solid #171a1d;color:#fff;position:sticky;top:0;z-index:100}.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:26px;height:26px;border-radius:var(--radius-s);background:var(--accent-line);display:grid;place-items:center;font-weight:700;font-size:13px}.brand strong{display:block;line-height:1.2;font-size:13.5px;font-weight:600}.brand small{color:#9a9fa5;font-size:11px}.shell-nav{display:flex;gap:6px}.shell-nav button{background:none;border:none;color:#a8adb3;padding:0 2px;height:52px;cursor:pointer;font-weight:500;transition:color .12s,box-shadow .12s;box-shadow:inset 0 -2px 0 transparent}.shell-nav{gap:22px}.shell-nav button:hover{color:#fff}.shell-nav button.is-active{color:#fff;box-shadow:inset 0 -2px #fff}.shell-status{margin-left:auto;display:flex;align-items:center;gap:7px;color:#9a9fa5;font-size:13px}.shell-status i{width:7px;height:7px;border-radius:50%;background:#565c62}.shell-status.is-ok{color:#94c4a6}.shell-status.is-ok i{background:#5ea87d}.home{max-width:1240px;margin:0 auto;padding:32px 24px 60px}.home-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:26px}.home-hero h1{margin:0 0 5px;font-size:20px;font-weight:600;letter-spacing:-.01em}.home-hero p{margin:0;color:var(--muted)}.create-actions{display:flex;gap:10px}.btn-mode{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 14px;border-radius:var(--radius-s);border:1px solid var(--border-strong);background:var(--panel);cursor:pointer;transition:background .12s,border-color .12s;text-align:left}.btn-mode strong{font-size:14px}.btn-mode small{color:var(--muted);font-size:12px}.btn-mode:hover{border-color:var(--accent)}.btn-mode.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-mode.primary:hover{background:#16405c;border-color:#16405c}.btn-mode.primary small{color:#b9cbd7}.wf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.wf-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;cursor:pointer;transition:border-color .12s,background .12s;position:relative;display:flex;flex-direction:column;gap:10px}.wf-card:hover{border-color:var(--border-strong);background:var(--panel-2)}.wf-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.wf-card-head strong{font-size:15px;line-height:1.35}.wf-card-tools{display:flex;align-items:center;gap:4px;flex:none}.wf-card-tools .icon-del{opacity:.45;transition:opacity .12s}.wf-card:hover .wf-card-tools .icon-del,.wf-card-tools .icon-del:hover,.wf-card-tools .icon-del:focus-visible{opacity:1}.wf-mode{flex:none}.wf-mode.full{background:var(--accent-soft);color:var(--accent)}.wf-mode.complete{background:var(--warn-soft);color:var(--warn)}.wf-card-meta{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--muted);font-size:12.5px}.wf-card-meta code{background:var(--panel-2);padding:1px 7px;border-radius:6px;font-size:12px}.wf-card-foot{display:flex;align-items:center;justify-content:space-between;color:var(--faint);font-size:12px;border-top:1px solid var(--border);padding-top:9px}.wf-open{color:var(--accent);font-weight:500;font-size:12.5px}.home-empty{grid-column:1 / -1;text-align:center;padding:80px 0;color:var(--faint);display:flex;flex-direction:column;align-items:center;gap:8px}.home-empty .big{font-size:22px;color:var(--border-strong)}.designer{display:flex;flex-direction:column;height:calc(100vh - 56px)}.designer-bar{display:flex;align-items:center;gap:14px;padding:10px 18px;background:var(--panel);border-bottom:1px solid var(--border)}.back-btn{border:none;background:var(--panel-2);width:32px;height:32px;border-radius:var(--radius-s);cursor:pointer;color:var(--muted);font-size:15px}.back-btn:hover{background:var(--panel-3);color:var(--text)}.wf-name-input{border:1px solid transparent;background:transparent;font-size:16px;font-weight:600;padding:5px 10px;border-radius:var(--radius-s);width:260px;outline:none}.wf-name-input:hover{border-color:var(--border-strong)}.wf-name-input:focus{border-color:var(--accent);background:var(--panel)}.save-state{color:var(--faint);font-size:12px}.designer-bar .spacer{flex:1}.search-input{position:relative}.search-input .input{padding-left:30px}.search-input:before{content:"⌕";position:absolute;left:10px;top:7px;color:var(--faint);font-size:15px}.col-group-title{margin:14px 0 -4px 2px;font-size:11px;font-weight:700;letter-spacing:1px;color:var(--faint)}.type-badge{flex:none;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;font-size:11px;font-weight:800;font-family:ui-monospace,SF Mono,Menlo,monospace}.type-badge.num{background:var(--panel-3);color:var(--accent)}.type-badge.text{background:var(--panel-3);color:var(--muted)}.type-badge.date{background:var(--panel-3);color:var(--ok)}.type-badge.other{background:var(--panel-3);color:var(--warn)}.insp-empty{color:var(--faint);font-size:13px;padding:12px;background:var(--panel-2);border-radius:var(--radius-s);text-align:center}.seg{display:inline-flex;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-s);padding:3px;gap:3px}.seg button{border:1px solid transparent;background:none;padding:5px 11px;border-radius:4px;cursor:pointer;color:var(--muted);font-weight:500}.seg button.is-active{background:var(--panel);color:var(--text);border:1px solid var(--border-strong);padding:5px 11px;font-weight:600}.row-2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.picked-hint{color:var(--faint);font-size:12.5px;padding:3px 0}.picked-chip{display:inline-flex;align-items:center;gap:5px;max-width:100%;background:var(--accent-soft);color:var(--accent);border-radius:6px;padding:3px 4px 3px 8px;font-size:12.5px;font-weight:500}.picked-chip .txt{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picked-chip button{border:none;background:none;color:inherit;cursor:pointer;padding:0 3px;border-radius:4px;font-size:13px;line-height:1.4}.picked-chip button:hover{background:#1d4e6f26}.icon-del{border:none;background:none;color:var(--faint);cursor:pointer;font-size:15px;padding:4px 6px;border-radius:6px}.icon-del:hover{background:var(--err-soft);color:var(--err)}.add-link{border:none;background:none;color:var(--accent);cursor:pointer;font-weight:500;padding:4px 0;font-size:13px}.add-link:hover{text-decoration:underline}.excel-warn{color:var(--warn);font-size:12px;margin-top:8px;background:var(--warn-soft);padding:8px 10px;border-radius:var(--radius-s)}.drawer{position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--panel);border-top:1px solid var(--border-strong);box-shadow:0 -8px 30px #1f1e1c24;transform:translateY(calc(100% - 42px));transition:transform .25s ease;max-height:62vh;display:flex;flex-direction:column}.drawer.is-open{transform:translateY(0)}.drawer-bar{height:42px;flex:none;display:flex;align-items:center;gap:8px;padding:0 16px;cursor:pointer;-webkit-user-select:none;user-select:none}.drawer-bar .caret{color:var(--faint);transition:transform .25s}.drawer.is-open .caret{transform:rotate(180deg)}.drawer-tabs{display:flex;gap:4px;margin-left:8px}.drawer-tabs button{border:none;background:none;padding:6px 12px;border-radius:6px;cursor:pointer;color:var(--muted);font-weight:500}.drawer-tabs button.is-active{background:var(--accent-soft);color:var(--accent);font-weight:600}.drawer-body{flex:1;overflow:auto;padding:0 16px 16px;min-height:200px}.plan-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;align-items:center}.plan-chip{background:var(--panel-2);border:1px solid var(--border);border-radius:3px;padding:3px 11px;font-size:12px;color:var(--muted)}.plan-chip+.plan-chip:before{content:""}.data-grid{border:1px solid var(--border);border-radius:var(--radius-s);overflow:auto}.data-grid table{border-collapse:collapse;width:100%;font-size:12.5px}.data-grid th{position:sticky;top:0;background:var(--panel-2);text-align:left;padding:8px 12px;border-bottom:1px solid var(--border-strong);white-space:nowrap;font-weight:600}.data-grid td{padding:7px 12px;border-bottom:1px solid var(--panel-2);white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}.data-grid tr:hover td{background:var(--panel-2)}.empty-state{text-align:center;color:var(--faint);padding:46px 0;display:flex;flex-direction:column;align-items:center;gap:6px}.empty-state .big{font-size:20px;color:var(--border-strong)}.task-card{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:10px}.task-head{display:flex;align-items:center;justify-content:space-between}.status-pill.pending{background:var(--panel-3);color:var(--muted)}.status-pill.running{background:var(--accent-soft);color:var(--accent)}.status-pill.success{background:var(--ok-soft);color:var(--ok)}.status-pill.failed{background:var(--err-soft);color:var(--err)}.progress{height:6px;background:var(--panel-3);border-radius:2px;overflow:hidden}.progress-bar{height:100%;background:var(--accent);border-radius:2px;transition:width .4s ease}.task-meta{display:flex;flex-wrap:wrap;gap:4px 16px;color:var(--muted);font-size:12.5px}.error-text{color:var(--err)}.sselect{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:8px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-s);background:var(--panel);cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s}.sselect:hover:not(:disabled){border-color:var(--accent)}.sselect.is-open{border-color:var(--accent);box-shadow:0 0 0 2px #1d4e6f29}.sselect:disabled{opacity:.5;cursor:not-allowed}.sselect-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.sselect.is-placeholder .sselect-label{color:var(--faint)}.sselect-arrow{color:var(--faint);font-size:11px;transition:transform .18s;flex:none}.sselect.is-open .sselect-arrow{transform:rotate(180deg);color:var(--accent)}.sselect-panel{position:fixed;z-index:300;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--radius-s);box-shadow:var(--shadow-pop);overflow:hidden;animation:sselect-in .13s ease}@keyframes sselect-in{0%{opacity:0;transform:translateY(-4px)}}.sselect-search{padding:8px;border-bottom:1px solid var(--panel-2)}.sselect-search input{width:100%;padding:6px 9px;border:1px solid var(--border);border-radius:6px;outline:none;font-size:13px}.sselect-search input:focus{border-color:var(--accent)}.sselect-list{overflow-y:auto;padding:4px}.sselect-item{position:relative;display:flex;align-items:baseline;gap:8px;width:100%;padding:8px 28px 8px 10px;border:none;background:none;border-radius:7px;cursor:pointer;text-align:left;font-size:13px}.sselect-item.has-hint{flex-direction:column;align-items:stretch;gap:2px}.sselect-item:hover{background:var(--accent-soft)}.sselect-item.is-active{color:var(--accent);font-weight:600;background:var(--accent-soft)}.sselect-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sselect-item-hint{color:var(--faint);font-size:11.5px;line-height:1.5;font-weight:400;white-space:normal;overflow-wrap:anywhere}.sselect-check{position:absolute;right:9px;top:8px;color:var(--accent);flex:none}.sselect-empty{padding:16px;text-align:center;color:var(--faint);font-size:12.5px}.sselect-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;border-top:1px solid var(--panel-2);color:var(--faint);font-size:12px}.sselect-foot button{background:none;border:0;padding:0;cursor:pointer;color:var(--accent);font-size:12px}.sselect-foot button:hover{text-decoration:underline}.tasks-page{max-width:960px;margin:0 auto;padding:28px 24px 60px}.tasks-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.tasks-head h1{margin:0;font-size:20px;font-weight:600}.task-list{display:flex;flex-direction:column;gap:12px}.task-list .task-card{background:var(--panel)}.toast{position:fixed;top:70px;left:50%;transform:translate(-50%,-16px);background:var(--ink);color:#fff;padding:9px 16px;border-radius:var(--radius-s);box-shadow:var(--shadow-pop);opacity:0;pointer-events:none;transition:all .25s ease;z-index:200;font-size:13.5px}.toast.is-show{opacity:1;transform:translate(-50%)}.toast.is-error{background:var(--err)}.admin-gate{display:flex;justify-content:center;padding-top:80px}.admin-gate-card{width:360px;padding:24px}.admin-gate-card h2{margin:0 0 6px}.admin-gate-card p{margin:0 0 16px;color:var(--muted);font-size:13px}.admin-section{margin-bottom:34px}.admin-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.admin-section-head h2{margin:0;font-size:15px;font-weight:600}.admin-form{padding:14px;margin-bottom:12px}.admin-tip{margin:0 0 10px;color:var(--muted);font-size:12.5px}.admin-table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-s);overflow:hidden;font-size:13px}.admin-table th{text-align:left;padding:8px 10px;background:var(--panel-2);color:var(--muted);font-size:12px;font-weight:600}.admin-table td{padding:6px 10px;border-top:1px solid var(--border);vertical-align:middle}.admin-table code{background:var(--panel-2);padding:1px 6px;border-radius:5px;font-size:12px}.admin-table tr.admin-row-off td{opacity:.55}.admin-actions{white-space:nowrap;text-align:right}.input-sm{padding:4px 8px;font-size:12.5px}.admin-pill-on{background:var(--ok-soft);color:var(--ok)}.admin-pill-off{background:var(--panel-2);color:var(--muted)}.admin-dblabel{color:var(--faint);font-size:12px}.nav-sep{width:1px;height:18px;background:#ffffff2e;align-self:center;margin:0 4px}.task-desc{margin:-4px 0 0;color:var(--muted);font-size:12.5px;line-height:1.5}.research-designer{height:calc(100vh - 56px)}.grain-seg{margin-left:4px}.issue-pill{background:var(--warn-soft);color:var(--warn);max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.research-tabs{display:flex;align-items:stretch;gap:6px;padding:0 18px;background:var(--panel);border-bottom:1px solid var(--border)}.research-tabs>button{display:flex;align-items:center;gap:1px;border:none;background:none;padding:11px 16px 10px;cursor:pointer;border-bottom:2px solid transparent;color:var(--muted);position:relative}.research-tabs>button:hover{background:var(--panel-2)}.research-tabs>button.is-active{border-bottom-color:var(--accent);color:var(--text)}.rt-name{display:flex;align-items:center;gap:7px}.research-tabs>button strong{font-size:14px;white-space:nowrap}.research-tabs>button.is-active strong{color:var(--text);font-weight:600}.research-tabs>button em{flex:none;font-style:normal;font-size:11px;font-weight:700;line-height:18px;background:var(--panel-2);color:var(--muted);border-radius:3px;padding:0 7px}.research-tabs>button.is-active em{background:var(--accent);color:#fff}.research-tabs-tail{margin-left:auto;display:flex;align-items:center;gap:10px}.rt-sheet{flex-direction:row;align-items:center;gap:8px;margin:0}.rt-sheet>span{white-space:nowrap}.rt-sheet input{width:140px}.research-body{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 340px;min-height:0;padding-bottom:42px}.research-main{overflow-y:auto;padding:20px 22px 40px;background:var(--bg);min-height:0}.criteria{max-width:900px;margin:0 auto;display:flex;flex-direction:column;gap:14px}.criteria-hint{margin:0;color:var(--muted);font-size:12.5px;background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--border-strong);border-radius:var(--radius-s);padding:9px 12px}.crit-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:13px 15px 11px;display:flex;flex-direction:column;gap:10px;cursor:pointer;transition:border-color .12s}.crit-card:hover{border-color:var(--border-strong)}.crit-card.is-target{border-color:var(--border-strong);box-shadow:inset 3px 0 0 var(--accent)}.crit-head{display:flex;align-items:center;gap:10px}.crit-no{flex:none;width:22px;height:22px;border-radius:var(--radius-s);background:var(--panel-3);border:1px solid var(--border-strong);color:var(--muted);display:grid;place-items:center;font-size:11.5px;font-weight:700;font-family:ui-monospace,SF Mono,Menlo,monospace}.crit-name{flex:1;min-width:0;border:1px solid transparent;background:transparent;font-size:14.5px;font-weight:600;padding:5px 8px;border-radius:var(--radius-s);outline:none}.crit-name:hover{border-color:var(--border-strong)}.crit-name:focus{border-color:var(--accent);background:var(--panel)}.crit-logic{flex:none}.crit-logic button{padding:5px 10px;font-size:12.5px}.crit-modules{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding-left:34px}.crit-mod{background:var(--panel-2);color:var(--muted)}.crit-read{margin:0 0 2px 34px;padding:8px 11px;border-radius:var(--radius-s);background:var(--panel-2);color:var(--muted);font-size:12.5px;line-height:1.7}.crit-read .is-hot{background:var(--accent-soft);color:var(--accent);font-weight:600;border-radius:3px;box-shadow:0 0 0 2px var(--accent-soft)}.crit-conds{display:flex;flex-direction:column;gap:8px}.crit-foot{color:var(--faint);font-size:11.5px;padding-left:34px;border-top:1px solid var(--border);padding-top:8px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.crit-tip{min-width:0}.crit-join{align-self:flex-start;margin:-4px 0 -4px 14px;color:var(--muted);font-size:12.5px;font-weight:700;background:var(--panel-2);border:1px solid var(--border-strong);border-radius:3px;padding:2px 12px}.tree{display:flex;flex-direction:column;gap:6px;border-left:2px solid var(--rail);padding-left:14px;margin-left:3px;--rail-ink: var(--rail)}.tree-d1{--rail: #d6d2c9;--rail-ink: #8d887e}.tree-d2{--rail: var(--accent-line)}.tree-d3{--rail: var(--accent-2)}.tree-d4{--rail: #9a6a1a}.tree-d5{--rail: #5b6570}.tree-join{align-self:flex-start;margin-left:-16px;padding:1px 9px;color:var(--rail-ink);background:var(--panel);font-size:11.5px;font-weight:700;border:1px solid var(--rail);border-radius:3px}.tree.is-flat{border-left-color:transparent}.tree-empty{padding:4px 2px}.brk{display:flex;flex-direction:column;gap:6px;border-radius:var(--radius-s);padding:2px 4px 0;margin-left:-4px;transition:background .15s}.brk.is-target{background:var(--accent-soft)}.brk.is-negated>.tree{--rail: var(--err)}.brk-head:hover+.tree{border-left-width:4px;margin-left:1px}.brk-head,.brk-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.brk-gap{flex:1}.brk-foot{min-height:0}.brk-badge{border:1px solid var(--border-strong);background:var(--panel);color:var(--text);border-radius:3px;padding:2px 10px;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px}.brk-badge:hover{border-color:var(--border-strong);background:var(--panel-2)}.brk-caret{color:var(--faint);font-size:10px}.brk-count{color:var(--faint);font-size:11.5px}.brk-logic button{padding:3px 9px;font-size:12px}.brk-not{border:1px solid var(--border);background:var(--panel-2);color:var(--muted);border-radius:var(--radius-s);padding:3px 10px;font-size:12px;font-weight:600;cursor:pointer}.brk-not.is-on{background:var(--err-soft);color:var(--err);border-color:#dbb8b4}.brk-warn{color:var(--warn);font-size:11.5px}.brk-del,.brk-foot .add-mini{opacity:0;transition:opacity .15s}.brk-head:hover .brk-del,.brk.is-target .brk-del,.brk:hover>.brk-foot .add-mini,.brk.is-target>.brk-foot .add-mini{opacity:1}.add-mini{font-size:12px;padding:2px 8px}.cond-row{--cond-control: 200px;display:grid;grid-template-columns:minmax(140px,200px) var(--cond-control) minmax(0,1fr) auto;gap:10px;align-items:center;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-s);padding:8px 10px}.cond-row.is-incomplete{border-color:#dbb8b4;background:#fdf7f6}.cond-field{min-width:0}.cond-field strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cond-field small{display:block;color:var(--faint);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cond-module{color:var(--accent)}.cond-row>.sselect{padding:7px 10px}.cond-row>.sselect .sselect-label{font-size:13px}.cond-params .input{padding:7px 10px;font-size:13px}.cond-params{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.cond-pair{display:flex;align-items:center;gap:6px}.cond-pair .input{width:96px}.cond-pair .arrow{color:var(--faint)}.cond-values{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.cond-params>.input{flex:0 1 var(--cond-control);width:auto;min-width:110px}.cond-unit{flex:none;white-space:nowrap;color:var(--faint);font-size:12px}.cond-stale{grid-column:1 / -1;margin:0;color:var(--err);font-size:11.5px}.cond-params>.cond-dict{flex:0 1 var(--cond-control);min-width:110px;padding:7px 10px}.cond-params>.cond-dict .sselect-label{font-size:13px}.cond-tail{display:flex;align-items:center;gap:4px}.icon-wrap{border:1px solid var(--border);background:var(--panel);color:var(--muted);border-radius:var(--radius-s);padding:2px 6px;font-size:11.5px;cursor:pointer;white-space:nowrap}.icon-wrap:hover{border-color:var(--accent);color:var(--accent)}.cond-negate{background:var(--err-soft);color:var(--err);font-size:11px}.collect-table td{vertical-align:middle}.collect-no{color:var(--faint);font-family:ui-monospace,SF Mono,Menlo,monospace}.collect-src strong{display:block;font-size:13px}.collect-src small{color:var(--faint);font-size:11.5px}.field-lib{background:var(--panel);border-left:1px solid var(--border);display:flex;flex-direction:column;min-height:0}.field-lib-head{padding:14px 16px 8px}.field-lib-head h3{margin:0;font-size:15px}.field-lib-head p{margin:3px 0 0;color:var(--muted);font-size:12px}.mod-chips{display:flex;flex-wrap:wrap;gap:5px;padding:0 16px 10px}.mod-chip{border:1px solid var(--border);background:var(--panel);border-radius:3px;padding:4px 10px;font-size:12px;cursor:pointer;color:var(--muted);transition:all .13s}.mod-chip:hover{border-color:var(--border-strong);color:var(--text)}.mod-chip.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.mod-chip em{font-style:normal;margin-left:5px;opacity:.65;font-size:11px}.field-lib-search{padding:0 16px 10px}.field-lib-search:before{left:26px;top:7px}.field-lib-list{flex:1;overflow-y:auto;padding:0 12px 12px;min-height:0}.lib-item{display:flex;align-items:center;gap:9px;width:100%;min-width:0;text-align:left;border:1px solid transparent;background:none;border-radius:var(--radius-s);padding:7px 9px;cursor:pointer;transition:all .12s}.lib-item:hover{border-color:var(--border-strong);background:var(--panel-2)}.lib-text{flex:1;min-width:0;display:flex;flex-direction:column}.lib-text .name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-text .name em{font-style:normal;color:var(--faint);font-weight:400;font-size:11.5px}.lib-text .label{color:var(--faint);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-dict{flex:none;font-size:10.5px;background:var(--accent-soft);color:var(--accent);border-radius:5px;padding:1px 6px}.field-lib-foot{padding:10px 16px;border-top:1px solid var(--border);color:var(--faint);font-size:11.5px;line-height:1.5}.chain-list{display:flex;flex-direction:column;gap:8px;padding-top:10px}.chain-node{display:grid;grid-template-columns:78px minmax(0,1fr);gap:12px;align-items:start;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-s);padding:9px 12px}.chain-node.st-failed{border-color:#dbb8b4;background:var(--err-soft)}.chain-node.st-running{border-color:var(--accent)}.chain-mark{font-size:11px;font-weight:700;text-align:center;border-radius:6px;padding:3px 0;background:var(--panel);color:var(--muted);border:1px solid var(--border)}.chain-node.is-anchor .chain-mark{background:var(--ink);color:#fff;border-color:transparent}.chain-node.is-inclusion .chain-mark{background:var(--accent-soft);color:var(--accent);border-color:transparent}.chain-node.is-exclusion .chain-mark{background:var(--err-soft);color:var(--err);border-color:transparent}.chain-node.is-cohort .chain-mark{background:var(--ok-soft);color:var(--ok);border-color:transparent}.chain-node.is-collect .chain-mark{background:var(--accent-soft);color:var(--accent);border-color:transparent}.chain-body{min-width:0}.chain-title{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.chain-title strong{font-size:13.5px}.chain-ms{color:var(--faint);font-size:11.5px;font-family:ui-monospace,SF Mono,Menlo,monospace}.chain-detail{color:var(--muted);font-size:12px;margin-top:2px}.chain-bar{display:flex;align-items:center;gap:10px;margin-top:7px}.chain-bar i{display:block;height:7px;border-radius:2px;min-width:4px;background:var(--accent);flex:none;max-width:420px}.chain-bar span{color:var(--muted);font-size:12px}.chain-bar b{color:var(--text);font-family:ui-monospace,SF Mono,Menlo,monospace}.chain-node.is-exclusion .chain-bar i{background:#a8781f}.sqlbox{margin:8px 0 0;border-radius:var(--radius-s);overflow:hidden;background:var(--navy);border:1px solid var(--navy-2)}.sqlbox-bar{display:flex;align-items:center;gap:10px;padding:6px 8px 6px 12px;background:var(--navy-2);border-bottom:1px solid rgba(180,175,166,.18)}.sqlbox-tag{color:#c7c2b9;font-size:11.5px;font-weight:600;letter-spacing:.02em;white-space:nowrap;flex:none}.sqlbox-hint{color:#8a857c;font-size:11px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sqlbox-btn{flex:none;border:1px solid rgba(180,175,166,.3);background:#b4afa61a;color:#c7c2b9;border-radius:6px;padding:3px 10px;font-size:11.5px;cursor:pointer;transition:all .13s;white-space:nowrap}.sqlbox-btn:hover{background:#b4afa638;color:#fff;border-color:#b4afa680}.sqlbox-btn.is-done{background:#2f6b464d;border-color:#5ea87d;color:#94c4a6}.sqlbox-btn.is-fail{background:#9d332c4d;border-color:#b5645c;color:#d29a94}.sqlbox-code{margin:0;padding:10px 12px;max-height:320px;overflow:auto;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.65;color:#dcd8d1;white-space:pre;tab-size:2}.sqlbox-code.is-wrap{white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}.sqlbox-code code{font:inherit}.sqlbox-code .sql-kw{color:#8fb4cc;font-weight:600}.sqlbox-code .sql-fn{color:#b0a8c2}.sqlbox-code .sql-str{color:#9bbf9f}.sqlbox-code .sql-num{color:#d3a878}.sqlbox-code .sql-param{color:#c3a3bd;font-weight:600}.sqlbox-code .sql-ident{color:#dcd8d1}.sqlbox-code .sql-comment{color:#8a857c;font-style:italic}.sqlbox-code .sql-punct{color:#a39e94}.sqlbox-code .sql-plain{color:#dcd8d1}.modal-mask{position:fixed;inset:0;background:#1f1e1c66;z-index:400;display:flex;align-items:center;justify-content:center;padding:40px 20px}.modal-card{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow-pop);width:100%;max-width:560px;display:flex;flex-direction:column;max-height:100%}.picker-head{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 18px 10px}.picker-head strong{display:block;font-size:15px}.picker-head small{color:var(--faint);font-size:12px}.picker-search{padding:0 18px 10px}.picker-tip{margin:0 18px 10px}.picker-list{flex:1;overflow-y:auto;padding:0 10px;min-height:180px}.picker-item{display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:none;background:none;padding:8px 10px;border-radius:var(--radius-s);cursor:pointer;font-size:13px}.picker-item:hover{background:var(--accent-soft)}.picker-item.is-picked{background:var(--accent-soft);color:var(--accent);font-weight:600}.picker-check{flex:none;font-size:14px}.picker-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-item code{flex:none;background:var(--panel-2);padding:1px 6px;border-radius:5px;font-size:11.5px}.picker-item small{flex:none;color:var(--faint);font-size:11px}.picker-picked{display:flex;flex-wrap:wrap;gap:6px;padding:10px 18px;border-top:1px solid var(--border);max-height:96px;overflow-y:auto}.picker-foot{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-top:1px solid var(--border)}@media(max-width:1200px){.research-body{grid-template-columns:minmax(0,1fr) 300px}.cond-row{--cond-control: 160px;grid-template-columns:minmax(120px,170px) var(--cond-control) minmax(0,1fr) auto}}.admin-mod-chips{padding:0 0 12px}.anchor-check{display:flex;align-items:center;gap:7px;padding:8px 0;font-size:13px;color:var(--text)}.use-flags{display:flex;gap:10px;font-size:12.5px;color:var(--muted);white-space:nowrap}.use-flags label{display:inline-flex;align-items:center;gap:4px;cursor:pointer}.shell-right{margin-left:auto;display:flex;align-items:center;gap:14px}.shell-right .shell-status{margin-left:0}.tc-trigger{position:relative;display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(255,255,255,.18);background:transparent;color:#d3d6da;padding:5px 11px;border-radius:var(--radius-s);cursor:pointer;font-size:12.5px;font-weight:500;transition:background .12s,color .12s}.tc-trigger:hover,.tc-trigger.is-open{background:#ffffff29;color:#fff;border-color:transparent}.tc-trigger.is-busy .tc-trigger-icon{animation:tc-spin 1.6s linear infinite;display:inline-block}.tc-badge{min-width:17px;height:17px;padding:0 5px;border-radius:999px;background:var(--warn);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center}@keyframes tc-spin{to{transform:rotate(360deg)}}.tc-mask{position:fixed;inset:0;background:#1f1e1c4d;opacity:0;pointer-events:none;transition:opacity .2s;z-index:300}.tc-mask.is-open{opacity:1;pointer-events:auto}.tc-panel{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:94vw;z-index:310;background:var(--panel);box-shadow:var(--shadow-pop);transform:translate(100%);transition:transform .22s ease;display:flex;flex-direction:column}.tc-panel.is-open{transform:translate(0)}.tc-head{display:flex;align-items:center;gap:12px;padding:18px 20px 10px}.tc-head h2{margin:0;font-size:16px;font-weight:600}.tc-head .status-pill{margin-left:auto}.tc-close{border:none;background:var(--panel-2);width:30px;height:30px;border-radius:8px;cursor:pointer;color:var(--muted);font-size:18px;line-height:1}.tc-close:hover{background:var(--panel-3);color:var(--text)}.tc-head .tc-close{margin-left:4px}.tc-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 20px 12px;border-bottom:1px solid var(--border)}.tc-list{flex:1;overflow-y:auto;padding:12px 20px;display:flex;flex-direction:column;gap:10px}.tc-item{border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:8px;background:var(--panel-2)}.tc-item.st-running,.tc-item.st-pending{border-color:#c6d3dc;background:var(--accent-soft)}.tc-item.st-failed{border-color:#dbb8b4}.tc-item-head{display:flex;align-items:center;gap:8px}.tc-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.tc-kind{font-size:11px;font-weight:600;flex:none}.tc-kind.preview{background:var(--accent-soft);color:var(--accent)}.tc-kind.export{background:var(--panel-3);color:var(--muted)}.tc-step{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:12px}.tc-meta{display:flex;flex-wrap:wrap;gap:3px 12px;color:var(--muted);font-size:12px}.tc-error{margin:0;font-size:12.5px}.tc-actions{display:flex;gap:8px}.tc-actions:empty{display:none}.tc-foot{padding:10px 20px;border-top:1px solid var(--border);text-align:right}.drawer-run{flex:1;min-width:0;display:flex;align-items:center;gap:10px;margin-left:12px}.drawer-run-title{color:var(--muted);font-size:12.5px;white-space:nowrap}.drawer-progress{flex:1;max-width:260px}.drawer-step{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}.chain-running{color:var(--accent);font-size:12px;display:inline-flex;align-items:center;gap:5px}.chain-node.st-skipped{opacity:.6}.btn-spinner{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:4px;vertical-align:-1px;border:2px solid currentColor;border-right-color:transparent;animation:tc-spin .8s linear infinite}.range-wrap{position:relative}.range-btn{white-space:nowrap}.range-btn.is-open{border-color:var(--accent);color:var(--accent)}.range-backdrop{position:fixed;inset:0;z-index:150}.range-pop{position:absolute;top:calc(100% + 8px);left:0;z-index:160;width:520px;max-width:90vw;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-pop);padding:14px 16px}.range-pop-head{margin-bottom:10px}.range-pop-head strong{display:block;font-size:14px}.range-pop-head span{color:var(--muted);font-size:12.5px}.range-pop-foot{display:flex;justify-content:flex-end;margin-top:8px}.trp{display:flex;flex-direction:column;gap:10px}.trp-presets{display:flex;flex-wrap:wrap;gap:6px}.trp-presets button{border:1px solid var(--border);background:var(--panel-2);color:var(--muted);border-radius:3px;padding:4px 12px;cursor:pointer;font-size:12.5px}.trp-presets button:hover{border-color:var(--border-strong);color:var(--text)}.trp-presets button.is-active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.trp-custom{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}.trp-label{font-weight:600;color:var(--text)}.trp-custom .input{width:150px}.trp-days{color:var(--faint)}.export-dialog{max-width:600px}.export-body{padding:0 18px 12px}.export-body .excel-warn{margin-top:10px}
