:root{color-scheme:light dark;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;background:#f4f5f7;color:#1a1a1a}.app{max-width:1180px;margin:0 auto;padding:32px 20px 80px}.app-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.app-header-actions{display:flex;align-items:center;gap:8px}.app-header h1{font-size:22px;margin:0}.rules-toolbar{display:flex;align-items:flex-end;gap:12px;margin-bottom:16px}.rules-search{display:flex;flex-direction:column;gap:6px;flex:1 1 280px;max-width:420px}.rules-search-label{font-size:12px;font-weight:600;color:#4b5563;text-transform:uppercase;letter-spacing:.04em}.rules-search-input{font-size:13px;color:#1a1a1a;border:1px solid #d1d5db;border-radius:6px;padding:7px 10px;background:#fff}.meta-filters{display:flex;flex-wrap:wrap;gap:20px;margin-bottom:20px}.meta-filter{font-size:13px;font-weight:600;color:#4b5563}.meta-filter select{font-size:13px;font-weight:400;color:#1a1a1a;border:1px solid #d1d5db;border-radius:6px;padding:4px 6px;background:#fff}.meta-number-input{width:64px;font-size:13px;font-weight:400;color:#1a1a1a;border:1px solid #d1d5db;border-radius:6px;padding:4px 6px;background:#fff}.meta-number-wrap{position:relative;display:inline-flex;align-items:center}.meta-number-wrap .meta-number-input{padding-right:18px}.meta-number-unit{margin-left:-18px;color:#6b7280;font-size:12px;pointer-events:none}.cron-input{min-width:180px;font-size:13px;font-weight:400;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:#1a1a1a;border:1px solid #d1d5db;border-radius:6px;padding:4px 8px;background:#fff}.rule-name-filter{flex:1 1 100%}.rule-name-input{min-width:min(100%,320px);width:min(100%,420px);font-size:13px;font-weight:400;color:#1a1a1a;border:1px solid #d1d5db;border-radius:6px;padding:4px 8px;background:#fff}.cron-cell{font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;white-space:nowrap}.name-condition{background:#fff;border:1px solid #d7dae0;border-radius:10px;padding:14px;margin-bottom:20px}.rules-empty{color:#6b7280;font-size:13px}.rules-table-wrap{background:#fff;border:1px solid #d7dae0;border-radius:10px;overflow-x:auto}.rules-table{width:100%;border-collapse:collapse;font-size:12.5px}.rules-table th,.rules-table td{text-align:left;padding:10px 12px;vertical-align:top;border-bottom:1px solid #e3e5ea}.rules-table th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;white-space:nowrap}.rules-table tr:last-child td{border-bottom:none}.rules-table-level{text-transform:capitalize}.rules-table-condition{margin:0;font-size:12px;white-space:pre-wrap;word-break:break-word}.rules-table-actions{width:1%;white-space:nowrap;text-align:right}.rules-table-actions .add-btn+.add-btn{margin-left:6px}.delete-btn{color:#b91c1c;border-color:#f1a8a8}.delete-btn:hover:not(:disabled){background:#fef2f2;border-color:#ef4444;color:#991b1b}.rule-toggle{position:relative;width:40px;height:22px;padding:0;border:none;border-radius:999px;background:#d1d5db;cursor:pointer;transition:background .15s ease}.rule-toggle.on{background:#2563eb}.rule-toggle:disabled{opacity:.6;cursor:not-allowed}.rule-toggle-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:transform .15s ease}.rule-toggle.on .rule-toggle-knob{transform:translate(18px)}.rule-row-disabled{opacity:.55}.name-condition h2{font-size:13px;margin:0 0 10px;color:#4b5563;text-transform:uppercase;letter-spacing:.04em}.name-condition-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.name-condition-header h2{margin:0}.name-condition-row{display:flex;align-items:flex-start;gap:10px}.name-condition-row+.name-condition-row{margin-top:10px}.name-condition-label{flex:0 0 130px;font-size:13px;font-weight:600;color:#4b5563;padding-top:7px}.tag-input{position:relative;flex:1 1 auto}.tag-input-tags{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:34px;border:1px solid #d1d5db;border-radius:6px;padding:4px 6px;background:#fff;cursor:text}.tag-chip{display:inline-flex;align-items:center;gap:4px;background:#eef2ff;color:#3730a3;border-radius:4px;padding:2px 4px 2px 8px;font-size:12.5px;white-space:nowrap}.tag-chip-remove{border:none;background:transparent;color:#6366f1;cursor:pointer;font-size:10px;padding:2px;line-height:1}.tag-chip-remove:hover{color:#312e81}.tag-input-field{border:none;outline:none;flex:1 1 80px;min-width:80px;font-size:13px;padding:4px 2px;background:transparent}.tag-suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:10;margin:0;padding:4px;list-style:none;background:#fff;border:1px solid #d1d5db;border-radius:6px;box-shadow:0 4px 12px #00000014;max-height:180px;overflow-y:auto}.tag-suggestions li button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:6px 8px;font-size:13px;border-radius:4px;cursor:pointer;color:#1a1a1a}.tag-suggestions li button:hover{background:#f3f4f6}.group{border:1px solid #d7dae0;border-radius:10px;background:#fff;padding:14px;margin:0}.group-root{border-color:#b9bfca}.group-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.operator-toggle{display:inline-flex;border-radius:8px;overflow:hidden;border:1px solid #c7cbd4}.operator-toggle button{border:none;background:#eef0f4;padding:6px 14px;font-size:12px;font-weight:700;letter-spacing:.04em;cursor:pointer;color:#6b7280}.operator-toggle button.active.and{background:#2563eb;color:#fff}.operator-toggle button.active.or{background:#ea580c;color:#fff}.group-actions{display:flex;gap:8px}.add-btn{border:1px solid #c7cbd4;background:#fff;border-radius:6px;padding:5px 10px;font-size:12px;cursor:pointer;color:#374151}.add-btn:hover{background:#f0f1f4}.add-btn:disabled{opacity:.6;cursor:not-allowed}.reset-btn{padding:7px 12px}.save-btn{background:#2563eb;border-color:#2563eb;color:#fff;font-weight:600}.save-btn:hover{background:#1d4ed8}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f111580;display:flex;align-items:flex-start;justify-content:center;padding:40px 20px;overflow-y:auto;z-index:100}.modal-content{background:#f4f5f7;border-radius:12px;max-width:1180px;width:100%;padding:24px;box-shadow:0 20px 60px #00000040}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.modal-header h1{font-size:22px;margin:0}.condition-subheading{font-size:18px;margin:0}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:24px}.save-error{margin-right:auto;color:#dc2626;font-size:13px}.icon-btn{border:1px solid transparent;background:transparent;color:#9ca3af;border-radius:6px;width:26px;height:26px;cursor:pointer;font-size:13px}.icon-btn:hover:not(:disabled){color:#dc2626;background:#fee2e2}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.group-error{color:#dc2626;font-size:12px;margin-bottom:8px}.group-children{display:flex;flex-direction:column;gap:8px;padding-left:8px;border-left:2px solid #eef0f4}.group-child{display:flex;flex-direction:column;gap:6px}.join-label{font-size:11px;font-weight:700;letter-spacing:.05em;color:#6b7280;margin-left:4px}.join-label.and{color:#2563eb}.join-label.or{color:#ea580c}.rule{position:relative;display:flex;align-items:center;gap:8px;background:#f8f9fb;border:1px solid #e3e5ea;border-radius:8px;padding:8px 10px;flex-wrap:wrap}.rule select,.rule input{border:1px solid #d1d5db;border-radius:6px;padding:6px 8px;font-size:13px;background:#fff}.rule-metric{min-width:100px;flex:1 1 auto}.rule-period{min-width:150px;flex:1 1 auto}.rule-operator{width:64px;text-align:center}.rule-value-wrap{position:relative;display:flex;align-items:center}.rule-value{width:110px}.rule-unit{margin-left:-22px;color:#6b7280;font-size:12px;pointer-events:none}.rule select.invalid,.rule input.invalid{border-color:#dc2626;background:#fef2f2}.rule-error{flex-basis:100%;color:#dc2626;font-size:11px}.builder-layout{display:grid;grid-template-columns:1fr minmax(260px,340px);gap:16px;align-items:start}.text-preview{position:sticky;top:20px}.preview{display:grid;grid-template-columns:1fr;gap:16px;margin-top:28px}.preview-block{background:#fff;border:1px solid #d7dae0;border-radius:10px;padding:14px}.preview-block h2{font-size:13px;margin:0 0 8px;color:#4b5563;text-transform:uppercase;letter-spacing:.04em}.preview-block-header{display:flex;align-items:center;justify-content:space-between}.preview-block-header h2{margin:0}.copy-btn{margin-bottom:8px;width:26px;height:26px;font-size:14px;color:#4b5563}.copy-btn:hover:not(:disabled){color:#111827;background:#f3f4f6}.preview-block pre{margin:0;font-size:12.5px;white-space:pre-wrap;word-break:break-word}@media (prefers-color-scheme: dark){body{background:#16181d;color:#e5e7eb}.modal-content{background:#16181d}.group,.rule,.preview-block,.name-condition,.rules-table-wrap{background:#1e2128;border-color:#30343d}.rules-table th,.rules-table td{border-color:#30343d}.rules-table th{color:#9ca3af}.rule-toggle{background:#3a3f49}.rule-toggle.on{background:#2563eb}.rule select,.rule input,.add-btn{background:#262a32;border-color:#3a3f49;color:#e5e7eb}.delete-btn{color:#fca5a5;border-color:#7f1d1d}.delete-btn:hover:not(:disabled){background:#3f1d1d;border-color:#ef4444;color:#fecaca}.meta-filter{color:#9ca3af}.meta-filter select,.meta-number-input{background:#262a32;border-color:#3a3f49;color:#e5e7eb}.rules-search-label{color:#9ca3af}.rules-search-input{background:#262a32;border-color:#3a3f49;color:#e5e7eb}.name-condition h2,.name-condition-label{color:#9ca3af}.tag-input-tags{background:#262a32;border-color:#3a3f49}.tag-input-field{color:#e5e7eb}.tag-chip{background:#2f2b52;color:#c7d2fe}.tag-chip-remove{color:#a5b4fc}.tag-suggestions{background:#1e2128;border-color:#3a3f49}.tag-suggestions li button{color:#e5e7eb}.tag-suggestions li button:hover{background:#262a32}.operator-toggle button{background:#262a32;color:#9ca3af}}@media (max-width: 900px){.builder-layout{grid-template-columns:1fr}.text-preview{position:static}}@media (max-width: 640px){.preview{grid-template-columns:1fr}}
