:root{--bg: #f4f5f7;--surface: #ffffff;--border: #e2e5ea;--border-2: #cbd0d8;--text-1: #111827;--text-2: #374151;--text-3: #6b7280;--text-4: #9ca3af;--accent: #2563eb;--accent-lt: #eff6ff;--accent-dk: #1d4ed8;--success: #059669;--success-lt:#ecfdf5;--danger: #dc2626;--danger-lt: #fef2f2;--warn: #d97706;--warn-lt: #fffbeb;--info: #0891b2;--info-lt: #ecfeff;--radius: 6px;--radius-lg: 10px;--shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.06);--shadow-md: 0 4px 12px rgba(0,0,0,.1);--font-body: "DM Sans", system-ui, sans-serif;--font-mono: "DM Mono", "Fira Code", monospace;--header-h: 56px;--nav-h: 44px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:15px}body{font-family:var(--font-body);background:var(--bg);color:var(--text-1);min-height:100vh}.container{max-width:1200px;margin:0 auto;padding:0 1.5rem}.header{background:var(--surface);border-bottom:1px solid var(--border);height:var(--header-h);display:flex;align-items:center;position:sticky;top:0;z-index:100}.header .container{display:flex;align-items:center;justify-content:space-between;width:100%}.header-left{display:flex;align-items:center;gap:.6rem}.header-logo{font-size:1.25rem}.header h1{font-size:1rem;font-weight:600;color:var(--text-1);letter-spacing:-.01em}.header-actions{display:flex;gap:.5rem}.tabs{background:var(--surface);border-bottom:1px solid var(--border);height:var(--nav-h);display:flex;align-items:flex-end}.tabs .container{display:flex;gap:0;height:100%}.tab-btn{height:100%;padding:0 1.25rem;background:none;border:none;border-bottom:2px solid transparent;font-family:var(--font-body);font-size:.875rem;font-weight:500;color:var(--text-3);cursor:pointer;transition:color .15s,border-color .15s;white-space:nowrap}.tab-btn:hover{color:var(--text-1)}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-content{display:none;padding:1.5rem 0}.tab-content.active{display:block}.btn{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem 1rem;border-radius:var(--radius);font-family:var(--font-body);font-size:.8125rem;font-weight:500;border:1px solid transparent;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s;text-decoration:none;white-space:nowrap}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent-dk);border-color:var(--accent-dk)}.btn-secondary{background:var(--surface);color:var(--text-2);border-color:var(--border-2)}.btn-secondary:hover{background:var(--bg)}.btn-ghost{background:transparent;color:var(--text-3)}.btn-ghost:hover{background:var(--bg);color:var(--text-1)}.btn-danger{background:var(--danger-lt);color:var(--danger);border-color:#fca5a5}.btn-danger:hover{background:var(--danger);color:#fff}.btn-sm{padding:.3rem .7rem;font-size:.75rem}.btn-block{width:100%;justify-content:center;margin-top:.75rem;padding:.6rem}.btn:disabled{opacity:.5;cursor:not-allowed}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow)}.card h2{font-size:1.1rem;font-weight:600;margin-bottom:.25rem}.card h3{font-size:.9375rem;font-weight:600;margin-bottom:1rem}.card-desc{font-size:.8125rem;color:var(--text-3);margin-bottom:1.25rem}.filters-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1rem 1.25rem;margin-bottom:1rem;box-shadow:var(--shadow)}.filters-grid{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap}.filter-group{display:flex;flex-direction:column;gap:.3rem;min-width:140px}.filter-group label{font-size:.75rem;font-weight:500;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em}.filter-actions{display:flex;gap:.5rem}.table-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}.table-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.table-header h3{font-size:.9375rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.header-btns{display:flex;gap:.5rem}.count-badge{background:var(--accent-lt);color:var(--accent);font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:999px}.table-responsive{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:.8125rem}.data-table th{padding:.625rem 1rem;text-align:left;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);background:var(--bg);border-bottom:1px solid var(--border);white-space:nowrap}.data-table td{padding:.75rem 1rem;border-bottom:1px solid var(--border);color:var(--text-2);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:var(--bg)}.loading-cell{text-align:center;padding:2.5rem!important;color:var(--text-4);font-style:italic}.badge{display:inline-block;padding:.2rem .55rem;border-radius:999px;font-size:.7rem;font-weight:600}.badge-success{background:var(--success-lt);color:var(--success)}.badge-danger{background:var(--danger-lt);color:var(--danger)}.badge-info{background:var(--info-lt);color:var(--info)}.badge-warn{background:var(--warn-lt);color:var(--warn)}.form-group{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.875rem}.form-group label{font-size:.75rem;font-weight:500;color:var(--text-2)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}input[type=text],input[type=number],input[type=date],select,textarea{padding:.45rem .7rem;border:1px solid var(--border-2);border-radius:var(--radius);font-family:var(--font-body);font-size:.8125rem;color:var(--text-1);background:var(--surface);width:100%;transition:border-color .15s,box-shadow .15s;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #2563eb1f}input.date-error,input.date-error:focus{border-color:var(--danger);box-shadow:0 0 0 3px #dc26261a}textarea{resize:vertical;min-height:70px}.help-text{font-size:.7rem;color:var(--text-4);margin-top:.2rem;display:block}.checkbox-group{display:flex;flex-direction:column;gap:.35rem}.checkbox-label{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;cursor:pointer}.checkbox-label input{width:auto}.two-col-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.25rem}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:flex-start;gap:.4rem}.stat-icon{font-size:1.4rem}.stat-value{font-size:1.75rem;font-weight:700;color:var(--text-1);line-height:1;font-family:var(--font-mono)}.stat-label{font-size:.75rem;color:var(--text-3);font-weight:500;text-transform:uppercase;letter-spacing:.04em}.scope-list{display:flex;flex-direction:column;gap:.5rem}.detail-row{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid var(--border);font-size:.8125rem}.detail-row:last-child{border-bottom:none}.detail-label{color:var(--text-3);font-weight:500}.detail-value{color:var(--text-1)}.empty-state{color:var(--text-4);font-size:.8125rem;padding:2rem;text-align:center;border:1px dashed var(--border-2);border-radius:var(--radius)}.result-card{background:var(--accent-lt);border:1px solid #bfdbfe;border-radius:var(--radius-lg);padding:1.5rem;text-align:center;margin-bottom:1rem}.result-label{font-size:.75rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.06em}.result-value{font-size:2.5rem;font-weight:700;color:var(--text-1);font-family:var(--font-mono);margin-top:.25rem}.result-details{display:flex;flex-direction:column;gap:.5rem}.export-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;align-items:start}.export-side{display:flex;flex-direction:column;gap:1.25rem}.preview-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin-top:.75rem}.preview-row{display:flex;justify-content:space-between;padding:.4rem 0;border-bottom:1px solid var(--border);font-size:.8125rem}.preview-row:last-child{border-bottom:none}.preview-label{font-weight:500;color:var(--text-3)}.preview-value{color:var(--text-1);font-family:var(--font-mono)}.weight-increase{color:var(--danger)}.weight-decrease{color:var(--success)}.weight-same{color:var(--text-3)}.modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:200;overflow-y:auto;padding:2rem 1rem}.modal.active{display:flex;align-items:flex-start;justify-content:center}.modal-content{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-width:720px;box-shadow:var(--shadow-md);animation:slideUp .2s ease}@keyframes slideUp{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border)}.modal-header h2{font-size:1.0625rem;font-weight:600}.close-btn{width:28px;height:28px;border-radius:var(--radius);border:none;background:var(--bg);font-size:1.1rem;cursor:pointer;color:var(--text-3);display:flex;align-items:center;justify-content:center;transition:background .15s}.close-btn:hover{background:var(--border);color:var(--text-1)}.modal-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:1.25rem 1.5rem;border-top:1px solid var(--border)}.form-section{padding:1.25rem 1.5rem;border-bottom:1px solid var(--border)}.form-section h4{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin-bottom:.75rem}.form-section h5{font-size:.8125rem;font-weight:600;color:var(--text-2);margin-bottom:.5rem}.section-desc{font-size:.8rem;color:var(--text-4);margin-bottom:.75rem}.condition-item{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:.5rem;align-items:flex-end;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem;margin-bottom:.5rem}.condition-item .form-group{margin-bottom:0}.condition-remove-btn{width:28px;height:28px;border-radius:var(--radius);border:1px solid var(--border-2);background:var(--surface);font-size:1rem;cursor:pointer;color:var(--text-3);display:flex;align-items:center;justify-content:center;flex-shrink:0;align-self:flex-end;transition:background .15s}.condition-remove-btn:hover{background:var(--danger-lt);color:var(--danger);border-color:#fca5a5}.empty-conditions{color:var(--text-4);font-size:.8125rem;padding:1rem;text-align:center;border:1px dashed var(--border-2);border-radius:var(--radius);margin-bottom:.5rem}.rule-preview{display:flex;flex-direction:column;gap:.75rem}.preview-block{display:flex;flex-direction:column;gap:.3rem}.preview-block .preview-label{font-size:.75rem;font-weight:600;color:var(--text-3)}.preview-code{background:#1e293b;color:#94a3b8;font-family:var(--font-mono);font-size:.75rem;padding:.75rem 1rem;border-radius:var(--radius);overflow-x:auto;white-space:pre-wrap;margin:0;max-height:180px;overflow-y:auto}#toast-container{position:fixed;bottom:1.5rem;right:1.5rem;display:flex;flex-direction:column;gap:.5rem;z-index:300}.toast{padding:.75rem 1rem;border-radius:var(--radius);font-size:.8125rem;font-weight:500;box-shadow:var(--shadow-md);animation:toastIn .2s ease;max-width:320px}@keyframes toastIn{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.toast.success{background:var(--success-lt);color:var(--success);border:1px solid #6ee7b7}.toast.error{background:var(--danger-lt);color:var(--danger);border:1px solid #fca5a5}.toast.info{background:var(--info-lt);color:var(--info);border:1px solid #67e8f9}.toast.warn{background:var(--warn-lt);color:var(--warn);border:1px solid #fcd34d}.upload-area{border:2px dashed var(--border-2);border-radius:var(--radius-lg);padding:3rem 2rem;text-align:center;background:var(--bg);cursor:pointer;transition:border-color .2s,background .2s}.upload-area:hover,.upload-area.dragover{border-color:var(--accent);background:var(--accent-lt)}.upload-area input[type=file]{display:none}.upload-icon{font-size:2.5rem;margin-bottom:.75rem}.upload-title{font-size:1rem;font-weight:500;margin-bottom:.35rem}.upload-sub{font-size:.8125rem;color:var(--text-3)}.file-info{margin-top:1rem;padding:.875rem 1rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);font-size:.8125rem;display:flex;justify-content:space-between;align-items:center}.progress-container{margin-top:1.5rem}.progress-bar{background:var(--border);border-radius:999px;height:8px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:999px;width:0%;transition:width .3s;display:flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:600;color:transparent}.progress-text{margin-top:.5rem;font-size:.8rem;color:var(--text-3);text-align:center}.upload-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin:1rem 0}.upload-stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.875rem 1rem;text-align:center}.upload-stat .val{font-size:1.375rem;font-weight:700;font-family:var(--font-mono);color:var(--text-1)}.upload-stat .lbl{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);margin-top:.2rem}@media (max-width: 900px){.two-col-grid,.export-grid{grid-template-columns:1fr}.stats-row,.condition-item{grid-template-columns:1fr 1fr}.form-row{grid-template-columns:1fr}}@media (max-width: 600px){.filters-grid{flex-direction:column}.stats-row{grid-template-columns:1fr}.upload-stats-grid{grid-template-columns:1fr 1fr}}
