:root{color:#111827;background:#f4f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--blue: #5b66dd;--blue-strong: #505de0;--green: #12a66a;--pink: #ff4eb8;--orange: #df7a19;--red: #dc3f45;--ink: #111827;--muted: #667085;--line: rgba(148, 163, 184, .28);--panel: rgba(255, 255, 255, .72);--panel-strong: rgba(255, 255, 255, .9);--shadow: 0 24px 80px rgba(31, 41, 55, .12);color-scheme:light}:root[data-theme=dark]{color:#f8fafc;background:#0f172a;--blue: #8b95ff;--blue-strong: #a5adff;--green: #35d399;--pink: #ff7bc9;--orange: #f5a047;--red: #fb7185;--ink: #f8fafc;--muted: #a8b3c7;--line: rgba(148, 163, 184, .24);--panel: rgba(15, 23, 42, .74);--panel-strong: rgba(30, 41, 59, .92);--shadow: 0 24px 80px rgba(0, 0, 0, .26);color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(135deg,#5b66dd1a,#12a66a14),linear-gradient(160deg,#f8fafc,#eef3fb 48%,#f8f1ea)}:root[data-theme=dark] body{background:linear-gradient(135deg,#35d39921,#8b95ff1a),linear-gradient(160deg,#0b1120,#111827 48%,#1e293b)}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.72}input,textarea{width:100%;border:1px solid rgba(148,163,184,.32);background:#ffffffb8;color:var(--ink);outline:none;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}:root[data-theme=dark] input,:root[data-theme=dark] textarea{border-color:#94a3b83d;background:#0f172aad}input:focus,textarea:focus{border-color:#5b66ddb8;box-shadow:0 0 0 4px #5b66dd1f;background:#ffffffeb}:root[data-theme=dark] input:focus,:root[data-theme=dark] textarea:focus{border-color:#35d399ad;box-shadow:0 0 0 4px #35d3991f;background:#0f172aeb}textarea{resize:vertical;line-height:1.55}.boot-screen,.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.boot-screen{color:var(--green)}.login-card{width:min(506px,100%);min-height:min(480px,calc(100vh - 48px));display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(24px,3.4vw,46px);border:1px solid rgba(255,255,255,.78);border-radius:30px;background:#ffffffad;box-shadow:inset 0 1px #ffffffe6,0 30px 100px #0f172a1f;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px)}.brand-mark{width:84px;height:84px;display:grid;place-items:center;margin-bottom:24px;color:var(--green);filter:drop-shadow(0 22px 28px rgba(4,120,87,.18)) drop-shadow(0 18px 24px rgba(110,231,183,.18))}.brand-mark svg{width:84px;height:84px}.login-card h1{margin:0;font-size:clamp(28px,3.2vw,34px);line-height:1.12;font-weight:800;letter-spacing:0}.login-card p{margin:12px 0 34px;color:var(--muted);font-size:clamp(15px,1.9vw,17px);font-weight:700}.password-field{width:min(403px,100%);min-height:64px;display:grid;grid-template-columns:24px 1fr 38px;align-items:center;gap:12px;padding:0 18px;border:2px solid rgba(148,163,184,.25);border-radius:16px;background:#ffffffa3;color:#98a1b3}.password-field input{border:0;box-shadow:none;background:transparent;font-size:clamp(16px,2vw,18px);font-weight:600}.password-field input:focus{box-shadow:none}.password-field input::placeholder{color:#a0a7b7}:root[data-theme=dark] .password-field input::placeholder{color:#94a3b8}.login-button{width:min(403px,100%);min-height:76px;margin-top:30px;font-size:clamp(20px,2.5vw,22px)}.app-shell{width:min(1440px,calc(100% - 32px));margin:0 auto;padding:28px 0 36px}.topbar,.stats-row,.workspace{width:100%}.topbar{display:flex;align-items:center;flex-wrap:nowrap;justify-content:space-between;gap:20px;margin-bottom:22px}.title-block{min-width:0;display:flex;align-items:center;gap:16px}.title-block>div:last-child{min-width:0}.title-block p,.panel-head p{margin:0 0 4px;color:var(--muted);font-size:13px;font-weight:700;text-transform:uppercase}.title-block p,.title-block h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.title-block h1,.panel-head h2,.editor-empty h2{margin:0;color:var(--ink);font-size:26px;line-height:1.2;letter-spacing:0}.mini-mark{width:54px;height:54px;flex:0 0 54px;display:grid;place-items:center;color:var(--green);filter:drop-shadow(0 10px 16px rgba(4,120,87,.14))}.mini-mark svg{width:52px;height:52px}.topbar-actions{flex:0 0 auto;display:flex;flex-wrap:nowrap;gap:10px;justify-content:flex-end}.primary,.secondary,.icon-button{border:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:12px;font-weight:800;letter-spacing:0;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}.primary{min-height:46px;padding:0 18px;color:#fff;background:linear-gradient(135deg,#636ee8,#5965dd);box-shadow:0 14px 30px #5b66dd47}.primary.login-button{min-height:76px;padding:0 24px}.secondary{min-height:42px;padding:0 14px;color:#344054;border:1px solid rgba(148,163,184,.28);background:#ffffffad}.secondary.tiny{min-height:30px;padding:0 10px;border-radius:9px;font-size:12px}.compact{min-height:40px;padding:0 12px}.icon-button{width:38px;height:38px;flex:0 0 auto;color:#667085;border:1px solid rgba(148,163,184,.24);background:#ffffff9e}.icon-button.ghost{border-color:transparent;background:transparent}.icon-button.mini{width:31px;height:31px;border-radius:9px}.primary:not(:disabled):hover,.secondary:not(:disabled):hover,.icon-button:not(:disabled):hover{transform:translateY(-1px)}.danger-text{color:var(--red)}.success-text{color:var(--green)}.warning-text{color:var(--orange)}.stats-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px}.stat-tile{min-height:116px;display:grid;grid-template-columns:48px 1fr;grid-template-rows:auto auto;gap:4px 14px;align-items:center;padding:22px;border:1px solid rgba(255,255,255,.72);border-radius:22px;background:var(--panel);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.stat-tile div{grid-row:span 2;width:48px;height:48px;display:grid;place-items:center;border-radius:14px}.stat-tile span{color:var(--muted);font-weight:700}.stat-tile strong{font-size:34px;line-height:1}.stat-tile.blue div{color:var(--blue);background:#5b66dd1f}.stat-tile.green div{color:var(--green);background:#12a66a1f}.stat-tile.orange div{color:var(--orange);background:#df7a1921}.workspace{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(520px,1.18fr);gap:18px;align-items:start}.glass-panel{border:1px solid rgba(255,255,255,.72);border-radius:24px;background:var(--panel);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.task-panel,.editor-panel{min-height:620px;padding:20px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.editor-head{position:sticky;top:0;z-index:2;padding-bottom:12px;background:linear-gradient(180deg,#ffffffd1,#fff0);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.search-field{height:46px;display:grid;grid-template-columns:20px 1fr;align-items:center;gap:10px;padding:0 14px;margin-bottom:16px;color:#667085;border:1px solid var(--line);border-radius:14px;background:#ffffffad}.search-field input{border:0;background:transparent;box-shadow:none}.search-field input:focus{box-shadow:none}.task-list{display:grid;gap:10px}.task-row{display:grid;grid-template-columns:1fr auto;gap:10px;padding:14px;border:1px solid rgba(148,163,184,.22);border-radius:16px;background:#ffffff94;cursor:pointer}.task-row.active{border-color:#5b66dd85;box-shadow:0 0 0 4px #5b66dd14}.task-main{min-width:0;display:grid;grid-template-columns:12px 1fr;gap:10px;align-items:center;padding:0;text-align:left;border:0;background:transparent;color:inherit}.task-main strong,.task-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-main strong{font-size:15px}.task-main small{margin-top:4px;color:var(--muted);font-size:12px}.task-remark{grid-column:1 / -1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:0;color:#475467;font-size:12px;line-height:1.5;overflow-wrap:anywhere}.status-dot{width:10px;height:10px;border-radius:50%}.status-dot.enabled{background:var(--green);box-shadow:0 0 0 5px #12a66a1f}.status-dot.disabled{background:#98a2b3;box-shadow:0 0 0 5px #98a2b324}.task-meta{grid-column:1 / -1;display:flex;gap:12px;color:var(--muted);font-size:12px}.task-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.empty-list,.editor-empty{min-height:320px;display:grid;place-items:center;align-content:center;gap:12px;color:var(--muted);text-align:center}.editor-panel form{display:grid;gap:16px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field{display:grid;gap:8px}.field>span,.toggle-line span{color:#344054;font-size:14px;font-weight:800}.field input,.field textarea{border-radius:14px;padding:13px 14px}.slug-field>div{display:grid;grid-template-columns:1fr 42px;gap:8px}.input-action{display:grid;grid-template-columns:1fr 42px;gap:8px}.subscription-fields{align-items:end}.keyword-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.subscription-link-card{display:grid;grid-template-columns:1fr 42px 42px;gap:8px;align-items:end;padding:14px;border:1px solid rgba(148,163,184,.24);border-radius:16px;background:linear-gradient(135deg,#ff4eb814,#20d39b14)}.subscription-link-card>div{display:grid;gap:8px;min-width:0}.subscription-link-card span,.source-node-head span{color:#344054;font-size:14px;font-weight:800}.subscription-link-card input{border-radius:14px;padding:12px 14px}.source-switch,.mode-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:6px;border:1px solid var(--line);border-radius:16px;background:#ffffff85}.mode-switch.four{grid-template-columns:repeat(4,minmax(0,1fr))}.mode-switch.three{grid-template-columns:repeat(3,minmax(0,1fr))}.mode-switch.compact-mode button{min-height:38px;font-size:12px}.source-switch button,.mode-switch button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:12px;color:#667085;font-weight:800;background:transparent}.source-switch button.active,.mode-switch button.active{color:var(--blue);background:#ffffffd1;box-shadow:0 8px 22px #1f293714}.rule-card{display:grid;gap:14px;padding:14px;border:1px solid rgba(148,163,184,.24);border-radius:16px;background:#ffffff85}.rule-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.rule-card-head span{display:block;color:#344054;font-size:14px;font-weight:800}.rule-card-head small,.field-hint,.helper-only small,.allocation-detail small{color:var(--muted);font-size:12px;line-height:1.5;font-weight:700}.helper-only{align-content:start;padding:12px 0}.allocation-detail{min-height:54px;display:grid;grid-template-columns:minmax(132px,auto) 1fr;align-items:center;gap:14px}.allocation-detail>div,.allocation-detail label{min-height:48px;display:inline-grid;grid-template-columns:auto auto;align-items:center;justify-content:start;gap:10px;padding:0 12px;border:1px solid rgba(148,163,184,.24);border-radius:14px;background:#ffffff75}.allocation-detail span{color:#344054;font-size:13px;font-weight:800;white-space:nowrap}.allocation-detail strong{min-width:30px;color:var(--blue);font-size:20px;line-height:1}.allocation-detail input{width:84px;min-height:34px;padding:6px 10px;border-radius:10px}.toggle-line{display:inline-flex;align-items:center;gap:10px;width:fit-content}.toggle-line input{width:20px;height:20px;accent-color:var(--blue)}.preview-box{display:grid;gap:12px;padding:14px;border:1px solid rgba(148,163,184,.24);border-radius:16px;background:#ffffff85}.source-node-box{display:grid;gap:10px;padding:14px;border:1px solid rgba(32,211,155,.18);border-radius:16px;background:#ecfdf56b}.source-node-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.source-node-head>div{display:flex;align-items:center;gap:8px}.source-node-head small{color:var(--muted);font-weight:800}.mini-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.mini-stats span{min-height:68px;display:grid;place-items:center;gap:4px;border-radius:14px;background:#ffffffa8}.mini-stats b{font-size:24px}.mini-stats small{color:var(--muted);font-weight:700}.preview-table{max-height:288px;overflow:auto;border:1px solid var(--line);border-radius:14px}.resizable-node-table{height:232px;min-height:156px;max-height:min(70vh,680px);resize:vertical}.source-node-table,.generated-node-table,.source-node-box .preview-table{max-height:min(70vh,680px)}table{width:100%;min-width:0;border-collapse:collapse;table-layout:fixed;background:#ffffff9e}.compact-table table{min-width:0}th,td{padding:11px 12px;border-bottom:1px solid rgba(148,163,184,.18);text-align:left;font-size:13px}.resizable-node-table th,.resizable-node-table td{height:38px;padding:7px 8px}th{color:#475467;font-weight:800}td{color:#344054;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.generated-node-table th:nth-child(1),.generated-node-table td:nth-child(1){width:auto}.generated-node-table th:nth-child(2),.generated-node-table td:nth-child(2){width:74px}.generated-node-table th:nth-child(3),.generated-node-table td:nth-child(3){width:28%}.generated-node-table th:nth-child(4),.generated-node-table td:nth-child(4){width:54px}.generated-node-table th:nth-child(5),.generated-node-table td:nth-child(5){width:78px}.source-node-table th:nth-child(1),.source-node-table td:nth-child(1){width:40px}.source-node-table th:nth-child(3),.source-node-table td:nth-child(3){width:78px}.row-actions{display:flex;gap:6px;justify-content:flex-start}.generated-node-table .row-actions{gap:4px}.node-name-cell{min-width:0;display:grid;gap:2px}.node-name-cell span,.node-name-cell small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-check{width:18px;height:18px;accent-color:var(--blue)}.editor-actions{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:10px;padding-top:12px;background:linear-gradient(0deg,#ffffffe0,#fff0);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.notice,.inline-error{display:flex;align-items:center;gap:8px;border-radius:12px;font-weight:700}.notice{padding:12px 14px;margin-bottom:14px}.inline-error{width:min(780px,100%);margin-top:18px;color:var(--red)}.notice.error{color:var(--red);border:1px solid rgba(220,63,69,.18);background:#dc3f4514}.notice.warning{align-items:flex-start;color:#b45309;border:1px solid rgba(223,122,25,.2);background:#df7a1917}.notice.warning svg{flex:0 0 auto;margin-top:2px}.warning-list{display:grid;gap:4px;min-width:0;margin:0;padding:0;list-style:none;font-size:12px;line-height:1.45;font-weight:700}.warning-list li{overflow-wrap:anywhere}.toast{position:fixed;right:24px;bottom:24px;z-index:20;display:flex;align-items:center;gap:9px;padding:12px 16px;color:#075e43;border:1px solid rgba(18,166,106,.22);border-radius:14px;background:#ecfdf5e0;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.qr-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:24px}.qr-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;border:0;background:#0f172a52;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.qr-dialog{position:relative;z-index:1;width:min(420px,100%);display:grid;gap:16px;padding:22px;border:1px solid rgba(255,255,255,.72);border-radius:24px;background:#ffffffe6;box-shadow:var(--shadow)}.qr-image{width:256px;height:256px;justify-self:center;border-radius:18px;background:#fff}.qr-value{max-height:96px;overflow:auto;margin:0;padding:12px;color:#475467;border-radius:14px;background:#f8fafcdb;font-size:12px;line-height:1.5;word-break:break-all}.spin{animation:spin .9s linear infinite}:root[data-theme=dark] .login-card,:root[data-theme=dark] .glass-panel,:root[data-theme=dark] .stat-tile{border-color:#94a3b838;background:var(--panel)}:root[data-theme=dark] .secondary,:root[data-theme=dark] .icon-button,:root[data-theme=dark] .password-field,:root[data-theme=dark] .search-field,:root[data-theme=dark] .task-row,:root[data-theme=dark] .subscription-link-card,:root[data-theme=dark] .source-switch,:root[data-theme=dark] .mode-switch,:root[data-theme=dark] .preview-box,:root[data-theme=dark] .rule-card,:root[data-theme=dark] .allocation-detail>div,:root[data-theme=dark] .allocation-detail label,:root[data-theme=dark] .mini-stats span,:root[data-theme=dark] table{color:#e2e8f0;border-color:#94a3b838;background:#0f172a94}:root[data-theme=dark] .source-node-box{border-color:#35d3993d;background:#064e3b33}:root[data-theme=dark] .source-switch button,:root[data-theme=dark] .mode-switch button{color:#a8b3c7}:root[data-theme=dark] .source-switch button.active,:root[data-theme=dark] .mode-switch button.active{color:var(--green);background:#1e293be6;box-shadow:0 8px 22px #0000002e}:root[data-theme=dark] .title-block p,:root[data-theme=dark] .panel-head p,:root[data-theme=dark] .task-main small,:root[data-theme=dark] .task-meta,:root[data-theme=dark] .mini-stats small,:root[data-theme=dark] .source-node-head small{color:var(--muted)}:root[data-theme=dark] .field>span,:root[data-theme=dark] .toggle-line span,:root[data-theme=dark] .subscription-link-card span,:root[data-theme=dark] .source-node-head span,:root[data-theme=dark] .rule-card-head span,:root[data-theme=dark] .allocation-detail span,:root[data-theme=dark] th,:root[data-theme=dark] td{color:#e2e8f0}:root[data-theme=dark] .task-remark,:root[data-theme=dark] .qr-value,:root[data-theme=dark] .node-name-cell small{color:#cbd5e1}:root[data-theme=dark] .editor-head{background:linear-gradient(180deg,#0f172aeb,#0f172a00)}:root[data-theme=dark] .editor-actions{background:linear-gradient(0deg,#0f172af0,#0f172a00)}:root[data-theme=dark] .qr-dialog{border-color:#94a3b838;background:var(--panel-strong)}:root[data-theme=dark] .qr-value{background:#0f172a9e}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:980px){.app-shell{width:min(100% - 24px,780px)}.topbar{align-items:center;gap:12px}.title-block{flex:1 1 auto;gap:12px}.mini-mark{width:46px;height:46px;flex-basis:46px}.mini-mark svg{width:46px;height:46px}.topbar-actions{width:auto;gap:8px;justify-content:flex-end}.topbar-actions button{width:46px;min-height:42px;flex:0 0 46px;padding:0}.topbar-actions button span{display:none}.stats-row{grid-template-columns:1fr}.workspace{display:block}.task-panel{min-height:540px}.editor-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:15;min-height:100vh;overflow:auto;padding:18px;border-radius:0;transform:translateY(100%);transition:transform .22s ease}.editor-panel.open{transform:translateY(0)}.editor-panel:not(.open){pointer-events:none}}@media(max-width:640px){.login-shell{padding:12px}.login-card{min-height:min(432px,calc(100vh - 24px));padding:24px 20px;border-radius:28px}.brand-mark{width:72px;height:72px;margin-bottom:20px}.brand-mark svg{width:60px;height:60px}.login-card p{margin-bottom:54px}.password-field{min-height:58px;grid-template-columns:24px 1fr 38px;padding:0 16px}.login-button{margin-top:28px}.primary.login-button{min-height:66px}.topbar,.title-block{gap:8px}.title-block p{display:none}.mini-mark{width:40px;height:40px;flex-basis:40px}.mini-mark svg{width:40px;height:40px}.topbar-actions{gap:6px}.topbar-actions button{width:38px;min-height:38px;flex-basis:38px;border-radius:10px}.title-block h1,.panel-head h2,.editor-empty h2{font-size:20px}.form-grid,.keyword-fields,.source-switch,.mode-switch,.mode-switch.four,.mode-switch.three,.mini-stats{grid-template-columns:1fr}.subscription-link-card{grid-template-columns:1fr 42px 42px}.task-row{grid-template-columns:1fr}.task-actions{justify-content:flex-start}.editor-actions{display:grid;grid-template-columns:1fr}.toast{right:12px;bottom:12px;left:12px;justify-content:center}}
