:root{--font-mono: "SF Mono", "Fira Code", "JetBrains Mono", Consolas, monospace;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--radius: 6px;--radius-sm: 4px;--transition: .15s ease}[data-theme=dark]{--bg-app: #0d1117;--bg-surface: #161b22;--bg-card: #1c2128;--bg-hover: #21262d;--bg-input: #0d1117;--bg-header: #161b22;--border: #30363d;--border-light: #21262d;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #484f58;--accent: #58a6ff;--accent-hover: #79c0ff;--danger: #f85149;--danger-bg: #f8514920;--warning: #d29922;--warning-bg: #d2992220;--success: #3fb950;--success-bg: #3fb95020;--scrollbar-bg: #161b22;--scrollbar-thumb: #30363d;--table-header-bg: #1c2128;--row-hover: #21262d;--row-error-bg: #f8514910;--shadow: 0 4px 24px rgba(0,0,0,.4)}[data-theme=light]{--bg-app: #f6f8fa;--bg-surface: #ffffff;--bg-card: #ffffff;--bg-hover: #f3f4f6;--bg-input: #ffffff;--bg-header: #ffffff;--border: #d0d7de;--border-light: #e5e7eb;--text-primary: #1f2328;--text-secondary: #656d76;--text-muted: #8b949e;--accent: #0969da;--accent-hover: #0550ae;--danger: #cf222e;--danger-bg: #cf222e20;--warning: #9a6700;--warning-bg: #9a670020;--success: #1a7f37;--success-bg: #1a7f3720;--scrollbar-bg: #f6f8fa;--scrollbar-thumb: #d0d7de;--table-header-bg: #f6f8fa;--row-hover: #f3f4f6;--row-error-bg: #cf222e10;--shadow: 0 4px 24px rgba(0,0,0,.12)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:var(--font-sans);font-size:13px;color:var(--text-primary);background:var(--bg-app);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--scrollbar-bg)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.main-layout{display:flex;flex:1;overflow:hidden}.topbar{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 12px;background:var(--bg-surface);border-bottom:1px solid var(--border);flex-shrink:0;gap:12px}.topbar-left{display:flex;align-items:center;gap:12px;min-width:0}.topbar-title{font-weight:700;font-size:15px;white-space:nowrap;color:var(--accent)}.topbar-template-name{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.topbar-center{display:flex;align-items:center;gap:12px;flex-shrink:0}.topbar-stat{font-size:12px;color:var(--text-secondary);white-space:nowrap}.stat-enabled{color:var(--success)}.stat-disabled{color:var(--text-muted)}.topbar-right{display:flex;align-items:center;gap:4px;flex-shrink:0}.topbar-divider{width:1px;height:20px;background:var(--border);margin:0 4px}.btn{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text-primary);font-size:12px;cursor:pointer;transition:all var(--transition);white-space:nowrap;font-family:var(--font-sans)}.btn:hover{background:var(--bg-hover);border-color:var(--text-muted)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-sm{padding:4px 8px;font-size:11px}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary:disabled{background:var(--accent);opacity:.4}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:var(--danger-bg)}.btn-active{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-full{width:100%;justify-content:center}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all var(--transition)}.btn-icon:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-icon-danger:hover{color:var(--danger);background:var(--danger-bg)}.btn-icon-only{width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center}.template-sidebar{width:240px;min-width:200px;background:var(--bg-surface);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.sidebar-title{display:flex;align-items:center;gap:6px;font-weight:600;font-size:13px;color:var(--text-secondary)}.sidebar-actions{display:flex;gap:2px}.template-list{flex:1;overflow-y:auto;padding:4px}.template-item{display:flex;align-items:center;padding:8px 10px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition);gap:6px}.template-item:hover{background:var(--bg-hover)}.template-active{background:var(--accent);color:#fff}.template-active .template-count{color:#ffffffb3}.template-active .btn-icon{color:#fffc}.template-active .btn-icon:hover{color:#fff;background:#ffffff26}.template-name{flex:1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.template-count{font-size:11px;color:var(--text-muted);flex-shrink:0}.template-actions{display:none;gap:1px}.template-item:hover .template-actions{display:flex}.template-item:hover .template-count{display:none}.template-edit-row{display:flex;align-items:center;gap:4px;width:100%}.template-edit-input{flex:1;padding:2px 6px;border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-primary);font-size:12px;outline:none}.template-empty{padding:20px;text-align:center;color:var(--text-muted);font-size:12px}.template-import{padding:8px;border-bottom:1px solid var(--border)}.template-import-input{width:100%;padding:6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-primary);font-family:var(--font-mono);font-size:11px;resize:vertical;outline:none;margin-bottom:6px}.template-import-input:focus{border-color:var(--accent)}.template-import-actions{display:flex;gap:4px;justify-content:flex-end}.center-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.duplicate-warning{padding:6px 12px;background:var(--warning-bg);color:var(--warning);font-size:12px;border-top:1px solid var(--border);flex-shrink:0}.rule-editor{display:flex;flex-direction:column;flex:1;overflow:hidden}.editor-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--border);background:var(--bg-surface);flex-shrink:0}.section-tabs{display:flex;gap:2px}.tab{padding:4px 12px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all var(--transition);display:flex;align-items:center;gap:4px;font-family:var(--font-sans)}.tab:hover{background:var(--bg-hover);color:var(--text-primary)}.tab-active{background:var(--accent);color:#fff;border-color:var(--accent)}.tab-active .tab-count{color:#ffffffb3}.tab-count{font-size:10px;color:var(--text-muted);background:var(--bg-hover);padding:1px 5px;border-radius:8px}.mode-switch{display:flex;gap:2px}.editor-body{flex:1;overflow:hidden}.rule-table-wrapper{display:flex;flex-direction:column;height:100%}.rule-table-toolbar{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--border-light);gap:8px;flex-shrink:0}.toolbar-left{display:flex;align-items:center;gap:8px}.toolbar-right{display:flex;align-items:center;gap:6px}.search-box{display:flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-secondary)}.search-box input{border:none;background:transparent;color:var(--text-primary);font-size:12px;outline:none;width:180px}.search-box input::placeholder{color:var(--text-muted)}.filter-bar{display:flex;gap:12px;padding:6px 12px;border-bottom:1px solid var(--border-light);background:var(--bg-card);flex-shrink:0}.filter-bar label{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-secondary)}.filter-bar select{padding:2px 6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-primary);font-size:11px;outline:none}.batch-actions{display:flex;align-items:center;gap:6px}.batch-count{font-size:11px;color:var(--accent);font-weight:600}.rule-table-scroll{flex:1;overflow:auto}.rule-table{width:100%;border-collapse:collapse;table-layout:fixed}.rule-table thead{position:sticky;top:0;z-index:10}.rule-table th{background:var(--table-header-bg);border-bottom:1px solid var(--border);padding:6px 8px;font-size:11px;font-weight:600;color:var(--text-secondary);text-align:left;white-space:nowrap}.rule-table td{padding:4px 6px;border-bottom:1px solid var(--border-light);vertical-align:middle}.rule-row:hover{background:var(--row-hover)}.rule-disabled{opacity:.5}.rule-error{background:var(--row-error-bg)}.col-check{width:32px;text-align:center}.col-enable{width:40px;text-align:center}.col-section{width:80px}.col-type{width:130px}.col-value{width:auto;min-width:150px}.col-policy{width:110px}.col-extra{width:120px}.col-comment{width:100px}.col-actions{width:110px}.cell-center{text-align:center}.cell-select{width:100%;padding:3px 4px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-primary);font-size:12px;outline:none}.cell-select:focus{border-color:var(--accent)}.cell-input{width:100%;padding:3px 6px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);font-size:12px;font-family:var(--font-mono);outline:none}.cell-input:hover{border-color:var(--border)}.cell-input:focus{border-color:var(--accent);background:var(--bg-input)}.cell-input-small{font-size:11px}.policy-badge{display:inline-block;padding:2px 8px;border-radius:10px;background:var(--accent);color:#fff;font-size:11px;cursor:pointer;transition:all var(--transition)}.policy-badge:hover{opacity:.8}.cell-actions{display:flex;gap:2px;justify-content:center}.empty-table{text-align:center;color:var(--text-muted);padding:40px 0!important;font-size:13px}.raw-editor{display:flex;flex-direction:column;height:100%}.raw-editor-toolbar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--border-light);flex-shrink:0}.raw-editor-label{font-size:12px;color:var(--text-secondary)}.raw-textarea{flex:1;width:100%;padding:12px;border:none;background:var(--bg-input);color:var(--text-primary);font-family:var(--font-mono);font-size:13px;line-height:1.6;resize:none;outline:none}.right-panel{width:260px;min-width:220px;background:var(--bg-surface);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0}.panel-title{display:flex;align-items:center;gap:6px;padding:10px 12px;font-weight:600;font-size:13px;color:var(--text-secondary);border-bottom:1px solid var(--border-light)}.badge{padding:1px 6px;border-radius:8px;font-size:10px;font-weight:600}.badge-error{background:var(--danger-bg);color:var(--danger)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.policy-panel{padding-bottom:8px;border-bottom:1px solid var(--border)}.policy-stats{padding:8px 12px}.policy-stat-empty{font-size:12px;color:var(--text-muted);padding:8px 0}.policy-stat-item{display:flex;align-items:center;justify-content:space-between;padding:3px 0;font-size:12px}.policy-stat-name{font-family:var(--font-mono);color:var(--text-primary)}.policy-stat-count{color:var(--text-secondary);font-size:11px}.policy-replace-section{padding:8px 12px}.section-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;margin-bottom:6px}.policy-replace-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}.policy-replace-row select{flex:1}.arrow-icon{color:var(--text-muted);flex-shrink:0}.quick-buttons{display:grid;grid-template-columns:1fr 1fr;gap:4px}.btn-main-group{margin-top:4px;background:var(--accent);color:#fff;border-color:var(--accent)}.btn-main-group:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.group-tags{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}.group-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;background:var(--bg-hover);border:1px solid var(--border);font-size:11px;color:var(--text-primary)}.group-tag-main{border-color:var(--accent);background:var(--accent);color:#fff}.group-tag-main .group-tag-remove{color:#ffffffb3}.group-tag-main .group-tag-remove:hover{color:#fff}.group-tag-badge{font-size:9px;padding:0 3px;border-radius:4px;background:#ffffff40;color:inherit}.group-tag-remove{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-muted);cursor:pointer;padding:0;line-height:1}.group-tag-remove:hover{color:var(--danger)}.group-empty{font-size:12px;color:var(--text-muted);padding:4px 0}.group-add-row{display:flex;gap:4px;margin-top:4px}.group-add-row .cell-input{flex:1;border:1px solid var(--border);background:var(--bg-input);font-family:var(--font-sans)}.validation-panel{flex:1;overflow-y:auto}.validation-ok{padding:12px;text-align:center;color:var(--success);font-size:12px}.validation-list{padding:4px 12px 12px}.validation-item{display:flex;align-items:flex-start;gap:6px;padding:5px 0;font-size:11px;line-height:1.4;border-bottom:1px solid var(--border-light)}.validation-item:last-child{border-bottom:none}.validation-error{color:var(--danger)}.validation-warning{color:var(--warning)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .15s ease}.dialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:400px;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;animation:slideUp .2s ease}.dialog-wide{min-width:600px;max-width:800px}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);font-weight:600;font-size:14px}.dialog-body{padding:16px;overflow-y:auto;flex:1}.dialog-body p{font-size:13px;color:var(--text-secondary);line-height:1.6}.dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border)}.yaml-textarea{width:100%;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-primary);font-family:var(--font-mono);font-size:12px;line-height:1.6;resize:vertical;outline:none}.yaml-textarea:focus{border-color:var(--accent)}.yaml-preview{padding:12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:12px;line-height:1.6;overflow:auto;max-height:400px;white-space:pre;color:var(--text-primary)}.error-text{color:var(--danger);font-size:12px;margin-top:8px}.toast-container{position:fixed;top:60px;right:16px;z-index:2000;display:flex;flex-direction:column;gap:6px}.toast{padding:8px 16px;border-radius:var(--radius);font-size:12px;box-shadow:var(--shadow);transform:translate(120%);transition:transform .3s ease;max-width:300px}.toast-visible{transform:translate(0)}.toast-success{background:var(--success-bg);color:var(--success);border:1px solid var(--success)}.toast-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger)}.toast-info{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@media (max-width: 1024px){.template-sidebar{width:180px;min-width:160px}.right-panel{width:220px;min-width:180px}}@media (max-width: 768px){.template-sidebar,.right-panel,.topbar-center{display:none}}
