*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f1f5f9;--surface:#fff;--border:#e2e8f0;--text:#0f172a;--text-muted:#64748b;--blue-dark:#1e3a5f;--blue-mid:#1d4ed8;--blue-light:#dbeafe;--module-bg:#eff6ff;--radius:8px;--shadow:0 1px 3px #00000014, 0 1px 2px #0000000a;--shadow-md:0 4px 6px #00000012, 0 2px 4px #0000000d}html,body{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,sans-serif;font-size:14px;line-height:1.5}.app{flex-direction:column;min-height:100vh;display:flex}.header{background:var(--blue-dark);color:#fff;z-index:100;position:sticky;top:0;box-shadow:0 2px 8px #0000004d}.header-inner{justify-content:space-between;align-items:center;max-width:1400px;margin:0 auto;padding:12px 24px;display:flex}.header-left{align-items:center;gap:12px;display:flex}.header-logo{align-items:center;display:flex}.header-title{letter-spacing:-.3px;font-size:18px;font-weight:700}.header-subtitle{color:#93c5fd;margin-top:1px;font-size:11px}.header-right{align-items:center;gap:12px;display:flex}.sync-badge{color:#93c5fd;background:#ffffff14;border:1px solid #ffffff26;border-radius:20px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:flex}.tabs{background:var(--blue-dark);border-bottom:1px solid #ffffff1a;justify-content:center;gap:4px;max-width:100%;padding:0 24px;display:flex;overflow-x:auto}.tab-btn{color:#93c5fd;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 20px;font-size:13px;font-weight:500;transition:color .15s,border-color .15s}.tab-btn:hover{color:#fff}.tab-active{color:#fff!important;border-bottom-color:#60a5fa!important}.main{flex-direction:column;gap:16px;width:100%;max-width:1400px;margin:0 auto;padding:20px 24px 48px;display:flex}.summary-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;align-items:center;gap:24px;padding:14px 20px;display:flex}.summary-progress{flex:1;align-items:center;gap:12px;min-width:200px;display:flex}.progress-track{background:#e2e8f0;border-radius:99px;flex:1;height:8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#2563eb,#16a34a);border-radius:99px;height:100%;transition:width .4s}.progress-label{color:var(--text-muted);white-space:nowrap;font-size:12px}.summary-counts{flex-wrap:wrap;gap:8px;display:flex}.chip{cursor:pointer;border:2px solid #0000;border-radius:99px;align-items:center;gap:5px;padding:4px 10px;font-size:12px;font-weight:600;transition:opacity .12s,border-color .12s,box-shadow .12s;display:inline-flex}.chip:hover{opacity:.8}.chip-pass{color:#15803d;background:#dcfce7}.chip-fail{color:#b91c1c;background:#fee2e2}.chip-adjust{color:#6d28d9;background:#ede9fe}.chip-pending{color:#64748b;background:#f1f5f9}.chip-active{border-color:currentColor;box-shadow:0 0 0 3px #00000014}.filter-reset-btn{color:#64748b;cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #e2e8f0;border-radius:99px;height:28px;padding:0 12px;font-size:11px;font-weight:600;transition:background .12s,border-color .12s,color .12s}.filter-reset-btn:hover{color:#dc2626;background:#fee2e2;border-color:#dc2626}.state-box{color:var(--text-muted);text-align:center;flex-direction:column;align-items:center;gap:16px;padding:64px 24px;display:flex}.error-box{color:#dc2626}.btn-retry{color:#fff;cursor:pointer;background:#dc2626;border:none;border-radius:6px;padding:8px 20px;font-size:13px;font-weight:600}.btn-retry:hover{background:#b91c1c}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);overflow:auto}.audit-table{border-collapse:collapse;table-layout:fixed;width:100%}.audit-table thead tr{background:var(--blue-dark);color:#fff}.audit-table thead th{text-align:left;letter-spacing:.4px;text-transform:uppercase;white-space:nowrap;padding:13px 16px;font-size:12px;font-weight:600}.col-module,.col-submodule{width:14%}.col-testcase{width:35%}.col-status{width:12%}.col-notes{width:25%}.testcase-wrap{align-items:center;gap:6px;display:flex}.insert-actions{opacity:0;flex-direction:column;flex-shrink:0;gap:2px;transition:opacity .15s;display:flex}tr:hover .insert-actions{opacity:1}.insert-dir-btn{color:#64748b;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:4px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;font-size:11px;line-height:1;transition:background .12s,border-color .12s,color .12s;display:flex}.insert-dir-btn:hover:not(:disabled){color:#1d4ed8;background:#dbeafe;border-color:#3b82f6}.insert-dir-btn:disabled{opacity:.4;cursor:not-allowed}.delete-row-btn{color:#94a3b8;cursor:pointer;opacity:0;background:#fff;border:1px solid #cbd5e1;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;padding:0;font-size:14px;line-height:1;transition:opacity .15s,background .12s,border-color .12s,color .12s;display:flex}tr:hover .delete-row-btn{opacity:1}.delete-row-btn:hover:not(:disabled){color:#dc2626;background:#fee2e2;border-color:#dc2626}.delete-row-btn:disabled{opacity:.4;cursor:not-allowed}.audit-table tbody tr{border-bottom:1px solid var(--border);transition:background .1s}.audit-table tbody tr:last-child{border-bottom:none}.audit-table tbody tr:hover{background:#f8fafc}.row-new-module{border-top:2px solid #bfdbfe}.audit-table td{vertical-align:middle;padding:10px 16px;font-size:13.5px}.cell-module{background:var(--module-bg);vertical-align:middle;cursor:pointer;border-right:2px solid #bfdbfe;transition:background .12s}.cell-module:hover{background:#bfdbfe}.cell-module.filter-active{background:#93c5fd}.module-label{color:#1d4ed8;text-transform:uppercase;letter-spacing:.3px;text-align:center;font-size:12px;font-weight:700;display:block}.cell-submodule{border-right:1px solid var(--border);color:#334155;vertical-align:middle;text-align:center;cursor:pointer;background:#f8fafc;font-size:12.5px;font-weight:600;transition:background .12s}.cell-submodule:hover{background:#e2e8f0}.cell-submodule.filter-active{color:#1d4ed8;background:#bfdbfe}.cell-testcase{color:var(--text);line-height:1.4}.cell-status{text-align:center}.status-group{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:4px;padding:3px;display:inline-flex}.status-radio{cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;transition:background .12s,transform .1s;display:flex;position:relative}.status-radio:hover{background:#0000000f}.status-radio:active{transform:scale(.93)}.status-radio.radio-active-pass{background:#bbf7d0;border:2px solid #16a34a;transform:scale(1.1);box-shadow:0 0 0 3px #16a34a26}.status-radio.radio-active-fail{background:#fecaca;border:2px solid #dc2626;transform:scale(1.1);box-shadow:0 0 0 3px #dc262626}.status-radio.radio-active-adjust{background:#ddd6fe;border:2px solid #7c3aed;transform:scale(1.1);box-shadow:0 0 0 3px #7c3aed26}.status-radio.radio-active-pending{background:#cbd5e1;border:2px solid #64748b;transform:scale(1.1);box-shadow:0 0 0 3px #64748b26}.status-radio:not([class*=radio-active]):hover{background:#00000012}.status-radio[title]:hover:after{content:attr(title);color:#fff;white-space:nowrap;pointer-events:none;z-index:300;background:#0f172a;border-radius:5px;padding:3px 7px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;font-weight:500;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.header-logo-wrap{align-items:center;display:flex}.header-logo-img{object-fit:contain;width:auto;height:36px}.notes-cell{align-items:flex-start;gap:6px;display:flex;position:relative}.notes-input{width:100%;color:var(--text);resize:none;field-sizing:content;background:0 0;border:1px solid #0000;border-radius:5px;min-height:32px;padding:5px 8px;font-family:inherit;font-size:13px;line-height:1.4;transition:border-color .15s,background .15s;overflow:hidden}.notes-input:hover{background:#f8fafc;border-color:#cbd5e1}.notes-input:focus{background:#fff;border-color:#3b82f6;outline:none;box-shadow:0 0 0 3px #3b82f61f}.notes-input::placeholder{color:#cbd5e1}.testcase-input{color:#1e293b;font-weight:500}.testcase-input:not(:focus):not(:hover){border-style:dashed;border-color:#0000}.testcase-input:hover{border-color:#94a3b8!important}.saving-dot{background:#3b82f6;border-radius:50%;width:7px;height:7px;animation:1s infinite pulse;position:absolute;top:8px;right:6px}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:.9s linear infinite spin;display:block}@media (max-width:768px){.header-inner{padding:10px 16px}.main{padding:16px 12px 32px}.tabs{padding:0 12px}.col-module,.col-submodule{width:10%}.col-testcase{width:30%}.audit-table td,.audit-table th{padding:8px 10px}.module-label{font-size:11px}}
