:root{--navy: #1c2b3a;--navy-light: #2a3f52;--blue: #2f80c5;--blue-dark: #256aa5;--bg: #f4f6f8;--panel: #ffffff;--border: #dfe3e8;--text: #1f2933;--text-muted: #6b7684;--danger: #c0392b;--critical: #c0392b;--high: #d9822b;--medium: #2f80c5;--low: #4a9b5e;--status-passed: #2e9e5b;--status-failed: #d64545;--status-blocked: #8b5fbf;--status-retest: #d9822b;--status-untested: #9aa5b1;font-family:-apple-system,Segoe UI,Malgun Gothic,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-size:14px}input,select,textarea,button{font-family:inherit;font-size:14px}input,select,textarea{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:4px;background:#fff;color:var(--text);margin-bottom:12px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #2f80c526}.field-label{display:block;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px}.field-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.form-error{color:var(--danger);background:#fdecea;border:1px solid #f5c6c2;padding:8px 10px;border-radius:4px;font-size:13px;margin-bottom:12px}.hint-text{color:var(--text-muted);font-size:13px;line-height:1.5}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;border-radius:4px;padding:8px 16px;font-weight:600;cursor:pointer;transition:background .12s ease,border-color .12s ease;text-decoration:none;white-space:nowrap}.btn-sm{padding:5px 10px;font-size:13px}.btn-block{width:100%}.btn-primary{background:var(--blue);color:#fff}.btn-primary:hover{background:var(--blue-dark)}.btn-secondary{background:#eef3f8;color:var(--blue-dark);border-color:#cfe0f0}.btn-secondary:hover{background:#e2edf7}.btn-ghost{background:transparent;color:var(--text);border-color:var(--border)}.btn-ghost:hover{background:#eef1f4}.btn-danger-ghost{background:transparent;color:var(--danger);border-color:#f0c4bd}.btn-danger-ghost:hover{background:#fdecea}.btn:disabled{opacity:.6;cursor:not-allowed}.icon-btn,.icon-btn-xs{background:transparent;border:none;cursor:pointer;color:var(--text-muted);border-radius:4px;padding:4px 6px}.icon-btn:hover,.icon-btn-xs:hover{background:#e9edf1;color:var(--text)}.icon-btn-xs{font-size:11px;padding:2px 5px}.spacer{flex:1}.app-loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--text-muted)}.login-screen{height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--navy) 0%,var(--navy-light) 100%)}.login-card{background:#fff;padding:36px 32px;border-radius:8px;width:340px;box-shadow:0 20px 60px #00000059}.login-logo{font-size:20px;font-weight:700;color:var(--navy);margin-bottom:4px}.login-sub{color:var(--text-muted);font-size:13px;margin:0 0 20px}.app-shell{height:100vh;display:flex;flex-direction:column}.topbar{height:52px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 20px;flex-shrink:0}.topbar-brand{display:flex;align-items:center;gap:8px;font-weight:700}.topbar-home{color:#fff;text-decoration:none}.topbar-sep{opacity:.5}.topbar .btn-ghost{color:#fff;border-color:#ffffff4d}.topbar .btn-ghost:hover{background:#ffffff1a}.page-container{padding:28px 32px;max-width:1100px;margin:0 auto;width:100%;overflow-y:auto}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.page-header h1{font-size:20px;margin:0}.empty-state{color:var(--text-muted);padding:40px;text-align:center}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.project-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:16px;cursor:pointer;transition:box-shadow .12s ease,transform .12s ease}.project-card:hover{box-shadow:0 4px 14px #14283c1a;transform:translateY(-1px)}.project-card-header{display:flex;align-items:center;justify-content:space-between}.project-card-header h3{margin:0;font-size:15px}.project-card-actions{display:flex;gap:2px}.project-card-desc{color:var(--text-muted);font-size:13px;margin:8px 0}.project-card-stats{display:flex;gap:14px;color:var(--text-muted);font-size:12px;margin-top:10px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#141e2873;display:flex;align-items:flex-start;justify-content:center;padding-top:8vh;z-index:100}.modal{background:#fff;border-radius:8px;max-width:92vw;max-height:82vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-header h3{margin:0;font-size:16px}.modal-close{background:none;border:none;font-size:20px;line-height:1;cursor:pointer;color:var(--text-muted)}.modal-body{padding:20px;overflow-y:auto}.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--border)}.form-grid{display:flex;flex-direction:column}.suite-bar{display:flex;align-items:center;gap:8px;padding:10px 20px;background:#fff;border-bottom:1px solid var(--border);flex-shrink:0}.suite-bar select{width:auto;margin-bottom:0;min-width:160px}.project-body{flex:1;display:flex;overflow:hidden}.tree-panel{width:260px;flex-shrink:0;background:#fff;border-right:1px solid var(--border);overflow-y:auto;padding:10px 0}.section-tree{font-size:13px}.tree-row{display:flex;align-items:center;gap:4px;padding:6px 12px;cursor:pointer;border-radius:4px;margin:0 6px}.tree-row:hover{background:#f0f4f8}.tree-row-active{background:#e3edf8;color:var(--blue-dark);font-weight:600}.tree-toggle{width:12px;color:var(--text-muted);flex-shrink:0}.tree-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-count{color:var(--text-muted);font-size:11px;margin-right:4px}.tree-actions{display:none;gap:2px}.tree-row:hover .tree-actions{display:flex}.case-list-panel{flex:1;display:flex;flex-direction:column;min-width:0;background:#fff}.case-toolbar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border)}.case-toolbar select{width:auto;margin-bottom:0;min-width:130px}.search-input{max-width:240px;margin-bottom:0}.case-table-scroll{flex:1;overflow:auto}.case-table{width:100%;border-collapse:collapse}.case-table thead th{position:sticky;top:0;background:#f8fafc;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);padding:8px 12px;border-bottom:1px solid var(--border)}.case-table td{padding:9px 12px;border-bottom:1px solid #eef1f4;font-size:13px}.case-table tbody tr{cursor:pointer}.case-table tbody tr:hover{background:#f6f9fc}.row-active{background:#e3edf8!important}.col-id{color:var(--text-muted);width:60px}.col-type,.col-priority{width:130px}.col-updated{width:140px;color:var(--text-muted);font-size:12px}.col-section{width:160px;color:var(--text-muted)}.case-title-cell{max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;background:#eef1f4;color:var(--text-muted)}.badge-critical{background:#fbe2df;color:var(--critical)}.badge-high{background:#fbead4;color:var(--high)}.badge-medium{background:#dfeafa;color:var(--medium)}.badge-low{background:#e1f0e5;color:var(--low)}.badge-type{background:#eef1f4;color:#4b5563}.case-panel-wrap{width:420px;flex-shrink:0;border-left:1px solid var(--border);background:#fff;display:flex;flex-direction:column}.case-panel{display:flex;flex-direction:column;height:100%}.case-panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}.case-panel-header h3{margin:0;font-size:14px}.case-panel-body{flex:1;overflow-y:auto;padding:16px 18px}.case-panel-footer{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--border)}.custom-fields-box{border:1px dashed var(--border);border-radius:6px;padding:10px 12px;margin-top:8px}.custom-field-row{display:flex;gap:8px;font-size:12px;padding:3px 0}.custom-field-key{color:var(--text-muted);min-width:100px}.custom-field-value{word-break:break-word}.import-step{display:flex;flex-direction:column;gap:4px}.mapping-table-wrap{max-height:320px;overflow:auto;border:1px solid var(--border);border-radius:6px;margin-top:10px}.mapping-table{width:100%;border-collapse:collapse}.mapping-table th{position:sticky;top:0;background:#f8fafc;text-align:left;font-size:11px;padding:8px 10px;border-bottom:1px solid var(--border)}.mapping-table td{padding:6px 10px;border-bottom:1px solid #eef1f4;vertical-align:middle}.mapping-table select{margin-bottom:0}.mapping-sample{color:var(--text-muted);font-size:12px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-errors{max-height:160px;overflow-y:auto;background:#fdecea;border:1px solid #f5c6c2;border-radius:6px;padding:8px 12px;font-size:12px;color:var(--danger);margin-top:8px}.project-tabs{display:flex;gap:2px;padding:0 20px;background:#fff;border-bottom:1px solid var(--border)}.project-tab{padding:11px 16px;font-size:13px;font-weight:600;color:var(--text-muted);border:none;background:none;cursor:pointer;border-bottom:2px solid transparent}.project-tab:hover{color:var(--text)}.project-tab-active{color:var(--blue-dark);border-bottom-color:var(--blue)}.status-badge{display:inline-block;padding:3px 10px;border-radius:10px;font-size:11px;font-weight:700;color:#fff}.status-badge-passed{background:var(--status-passed)}.status-badge-failed{background:var(--status-failed)}.status-badge-blocked{background:var(--status-blocked)}.status-badge-retest{background:var(--status-retest)}.status-badge-untested{background:var(--status-untested)}.status-btn-group{display:inline-flex;gap:4px}.status-btn{border:1px solid var(--border);background:#fff;color:var(--text-muted);font-size:11px;font-weight:700;padding:4px 9px;border-radius:4px;cursor:pointer}.status-btn:hover{background:#f2f5f8}.status-btn-active.status-btn-passed{background:var(--status-passed);border-color:var(--status-passed);color:#fff}.status-btn-active.status-btn-failed{background:var(--status-failed);border-color:var(--status-failed);color:#fff}.status-btn-active.status-btn-blocked{background:var(--status-blocked);border-color:var(--status-blocked);color:#fff}.status-btn-active.status-btn-retest{background:var(--status-retest);border-color:var(--status-retest);color:#fff}.status-btn-active.status-btn-untested{background:var(--status-untested);border-color:var(--status-untested);color:#fff}.progress-bar{display:flex;width:100%;height:8px;border-radius:4px;overflow:hidden;background:#eef1f4}.progress-seg-passed{background:var(--status-passed)}.progress-seg-failed{background:var(--status-failed)}.progress-seg-blocked{background:var(--status-blocked)}.progress-seg-retest{background:var(--status-retest)}.runs-toolbar{display:flex;align-items:center;padding:12px 20px;border-bottom:1px solid var(--border);background:#fff}.runs-list{padding:16px 20px;overflow-y:auto;flex:1}.run-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:14px 18px;margin-bottom:12px;cursor:pointer;transition:box-shadow .12s ease}.run-card:hover{box-shadow:0 4px 14px #14283c14}.run-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.run-card-title{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px}.run-card-schedule{color:var(--text-muted);font-size:12px;margin-bottom:10px}.run-card-stats{display:flex;align-items:center;gap:14px;margin-top:8px;font-size:12px;color:var(--text-muted)}.run-status-tag{padding:2px 8px;border-radius:10px;font-size:11px;font-weight:700}.run-status-active{background:#dfeafa;color:var(--blue-dark)}.run-status-closed{background:#eef1f4;color:var(--text-muted)}.run-detail-header{padding:16px 20px;background:#fff;border-bottom:1px solid var(--border)}.run-detail-title-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.run-detail-title-row h2{margin:0;font-size:17px}.run-detail-meta{display:flex;gap:16px;color:var(--text-muted);font-size:12px;margin-bottom:10px}.run-summary-counts{display:flex;gap:16px;font-size:12px;margin-top:8px}.run-summary-counts span{display:flex;align-items:center;gap:5px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.run-case-table{width:100%;border-collapse:collapse}.run-case-table th{position:sticky;top:0;background:#f8fafc;text-align:left;font-size:11px;text-transform:uppercase;color:var(--text-muted);padding:8px 12px;border-bottom:1px solid var(--border)}.run-case-table td{padding:8px 12px;border-bottom:1px solid #eef1f4;font-size:13px;vertical-align:top}.run-comment-input{margin-bottom:0;font-size:12px;padding:5px 8px}.case-picker-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:8px}.case-picker-list{max-height:320px;overflow-y:auto;border:1px solid var(--border);border-radius:6px}.case-picker-row{display:flex;align-items:center;gap:10px;padding:7px 12px;border-bottom:1px solid #eef1f4;font-size:13px}.case-picker-row:last-child{border-bottom:none}.case-picker-row input[type=checkbox]{width:auto;margin:0}.wizard-steps{display:flex;gap:8px;margin-bottom:14px;font-size:12px;color:var(--text-muted)}.wizard-step-active{color:var(--blue-dark);font-weight:700}
