*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f4f6f8;color:#18212a}button,input{font:inherit}button{cursor:pointer}.login-page{min-height:100vh;display:grid;place-items:center;padding:32px;background:linear-gradient(135deg,#eef3f5,#f9fafb)}.login-card{width:min(440px,100%);padding:42px;background:#fff;border-radius:20px;box-shadow:0 20px 60px #1626331a}.login-logo{max-width:210px;max-height:90px;object-fit:contain;margin-bottom:30px}.login-title{font-size:34px;font-weight:800}.login-subtitle{color:#65727d;margin-top:6px;margin-bottom:30px}.login-card label{display:block;font-size:13px;font-weight:700;margin-bottom:16px}.login-card input{display:block;width:100%;margin-top:7px;padding:13px 14px;border:1px solid #d6dde2;border-radius:10px;outline:none}.login-card input:focus{border-color:#7a8995}.login-version{margin-top:18px;text-align:center;font-size:12px;color:#8a959d}.primary-button,.secondary-button{border:0;border-radius:9px;padding:10px 16px;font-weight:700}.primary-button{background:#273844;color:#fff}.login-card .primary-button{width:100%;margin-top:6px;padding:13px}.primary-button.small{padding:9px 15px}.secondary-button{background:#edf1f3;color:#293844}.app-shell{min-height:100vh;display:flex}.sidebar{width:245px;background:#202d36;color:#fff;display:flex;flex-direction:column;transition:width .2s ease}.sidebar-collapsed{width:72px}.sidebar-header{min-height:84px;display:flex;align-items:center;gap:12px;padding:16px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-logo{width:42px;height:42px;object-fit:contain;background:#fff;border-radius:8px;padding:4px}.sidebar-header strong{display:block}.sidebar-header small{display:block;margin-top:3px;color:#b9c4cb}.sidebar-nav{padding:14px 10px;flex:1}.nav-item,.logout-button{width:100%;display:flex;align-items:center;gap:12px;border:0;background:transparent;color:#dbe2e6;padding:12px;border-radius:8px;text-align:left;margin-bottom:4px}.nav-item:hover,.nav-item.active{background:#ffffff17;color:#fff}.logout-button{margin:10px;width:calc(100% - 20px)}.main-area{min-width:0;flex:1}.topbar{height:64px;background:#fff;border-bottom:1px solid #e4e8eb;display:flex;align-items:center;padding:0 22px;gap:18px}.icon-button{width:38px;height:38px;display:grid;place-items:center;border:0;border-radius:8px;background:#f0f3f5}.topbar-title{font-size:12px;font-weight:800;letter-spacing:.12em}.user-info{margin-left:auto;font-size:13px;color:#5f6d77}.content{padding:28px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:22px}.page-header h1{margin:0;font-size:28px}.page-header p{margin:6px 0 0;color:#6c7881}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.metric-card{background:#fff;border:1px solid #e5e9ec;border-radius:12px;padding:20px}.metric-card span{display:block;color:#68747d;font-size:13px}.metric-card strong{display:block;font-size:30px;margin-top:8px}.panel{background:#fff;border:1px solid #e5e9ec;border-radius:12px;padding:20px}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.panel-header h2{margin:0;font-size:18px}.panel-header p{margin:5px 0 0;color:#6b7780}.table-wrapper{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;padding:11px 12px;border-bottom:1px solid #dde3e7;color:#65717a;font-size:12px;text-transform:uppercase;letter-spacing:.04em}td{padding:14px 12px;border-bottom:1px solid #edf0f2;vertical-align:middle;font-size:14px}.table-secondary{display:block;color:#7c878f;margin-top:4px}.status-badge{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:#e9f2ed;color:#315b43;font-size:12px;font-weight:700}.search-box{display:flex;align-items:center;gap:9px;border:1px solid #dce2e6;border-radius:9px;padding:0 12px;margin-bottom:18px}.search-box input{flex:1;border:0;outline:0;padding:12px 0}.execution-header{align-items:center}.execution-actions{display:flex;align-items:center;gap:12px}.text-button{border:0;background:transparent;padding:0;color:#52636f;margin-bottom:8px}.equipment-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));background:#fff;border:1px solid #e5e9ec;border-radius:12px;padding:18px;gap:18px;margin-bottom:18px}.info-item span{display:block;font-size:11px;color:#7a858d;text-transform:uppercase;letter-spacing:.04em}.info-item strong{display:block;margin-top:5px;font-size:14px}.tabs{display:flex;gap:6px;margin-bottom:12px}.tab{border:0;background:#e8edef;color:#45545e;padding:10px 22px;border-radius:8px 8px 0 0;font-weight:700}.tab.active{background:#273844;color:#fff}.execution-panel{border-top-left-radius:0}.progress-label{font-size:13px;color:#61707a}.test-list{display:grid;gap:10px}.test-item{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid #e4e9ec;border-radius:10px}.test-number{width:38px;height:38px;display:grid;place-items:center;border-radius:8px;background:#eef2f4;font-weight:800}.test-content{flex:1}.test-content strong,.test-content span{display:block}.test-content span{margin-top:4px;font-size:12px;color:#879199}@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.equipment-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.sidebar{width:72px}.sidebar-header div,.nav-item span,.logout-button span{display:none}.content{padding:18px}.metric-grid{grid-template-columns:1fr}.equipment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-header,.panel-header{align-items:flex-start;flex-direction:column}}.connection-status{margin-left:auto;display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:700}.connection-status.online{background:#e8f3ed;color:#315b43}.connection-status.offline{background:#f6e9e7;color:#7a3d34}.connection-dot{width:8px;height:8px;border-radius:50%;background:currentColor}.connection-status+.user-info{margin-left:0}.protocol-execution{display:grid;gap:18px}.protocol-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) auto;gap:12px;align-items:center;padding:14px;background:#f5f7f8;border-radius:10px}.protocol-summary div span{display:block;font-size:11px;color:#78848c;text-transform:uppercase}.protocol-summary div strong{display:block;margin-top:4px;font-size:14px}.local-save-message{padding:10px 12px;background:#eef4f0;border-radius:8px;color:#315b43;font-size:13px;font-weight:600}.protocol-section{border:1px solid #e2e7ea;border-radius:12px;overflow:hidden}.protocol-section-header{display:flex;gap:14px;padding:17px;background:#f6f8f9;border-bottom:1px solid #e2e7ea}.protocol-section-number{min-width:42px;height:42px;display:grid;place-items:center;background:#273844;color:#fff;border-radius:8px;font-weight:800}.protocol-section-header h3{margin:0;font-size:17px}.protocol-section-header p{margin:4px 0 0;color:#6d7981;font-size:13px}.protocol-tests{padding:15px;display:grid;gap:14px}.protocol-test{padding:17px;border:1px solid #e2e7ea;border-radius:10px}.protocol-test-header{display:flex;justify-content:space-between;gap:20px;margin-bottom:16px}.protocol-test-header h4{margin:3px 0 0;font-size:15px}.protocol-test-header p{margin:5px 0 0;color:#6f7b83;font-size:13px}.test-code{font-size:11px;font-weight:800;color:#71808a}.evaluation-badge{height:fit-content;white-space:nowrap;padding:6px 10px;border-radius:999px;font-size:11px;font-weight:800}.evaluation-badge.pending{background:#eef1f3;color:#66737c}.evaluation-badge.conforming{background:#e8f3ed;color:#2f6545}.evaluation-badge.non-conforming{background:#f7e9e7;color:#8a4036}.evaluation-badge.not-applicable{background:#eceaf4;color:#5c5474}.protocol-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.protocol-field label{display:block;margin-bottom:6px;font-size:12px;font-weight:700}.required-marker{margin-left:3px;color:#a9473c}.field-input-wrapper{display:flex;align-items:center;border:1px solid #d8dfe3;border-radius:8px;overflow:hidden}.field-input-wrapper input{width:100%;border:0;outline:0;padding:10px 11px;background:#fff}.field-input-wrapper input:disabled{background:#f1f3f4}.field-unit{padding:0 10px;color:#67747d;font-size:12px;font-weight:700}.boolean-options{display:flex;gap:7px}.boolean-button{min-width:72px;border:1px solid #d5dde1;background:#f7f8f9;padding:9px 12px;border-radius:8px;font-weight:700}.boolean-button.selected{background:#273844;color:#fff;border-color:#273844}.acceptance-box{margin-top:15px;padding:11px 13px;background:#f5f7f8;border-left:3px solid #738692;border-radius:6px}.acceptance-box strong,.acceptance-box span{display:block}.acceptance-box strong{font-size:11px;text-transform:uppercase;color:#5f6d76}.acceptance-box span{margin-top:4px;font-size:13px}.protocol-test-footer{display:flex;justify-content:flex-end;margin-top:14px}@media(max-width:1100px){.protocol-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.protocol-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.protocol-summary,.protocol-fields{grid-template-columns:1fr}.protocol-test-header{flex-direction:column}}.instrument-config{display:grid;gap:20px}.config-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.config-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.config-grid label,.config-section>label{font-size:12px;font-weight:700}.config-grid input,.config-row select,.qd-strategy-select{width:100%;margin-top:6px;padding:10px 11px;border:1px solid #d7dfe3;border-radius:8px;background:#fff}.config-section{padding:16px;border:1px solid #e2e7ea;border-radius:10px}.config-section h3{margin:0 0 14px;font-size:16px}.config-row{display:grid;grid-template-columns:140px 220px auto;gap:14px;align-items:center;padding:9px 0;border-bottom:1px solid #eef1f3}.config-row:last-child{border-bottom:0}.config-check{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:700}.sampler-card{display:grid;gap:14px}.qd-strategy-select{max-width:560px}.generated-modules{padding:16px;background:#f5f7f8;border-radius:10px}.generated-modules-header{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:14px}.generated-modules-header h3{margin:0}.generated-modules-header p{margin:4px 0 0;color:#6f7a82;font-size:13px}.module-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.generated-module{min-height:105px;display:flex;flex-direction:column;gap:5px;padding:13px;background:#fff;border:1px solid #e0e6e9;border-radius:9px}.generated-module span{font-size:10px;font-weight:800;color:#77838b}.generated-module strong{font-size:14px}.generated-module small{color:#6f7a82;line-height:1.35}.generated-module.detector{border-left:4px solid #647783}.generated-module.inlet{border-left:4px solid #87949c}.generated-module.sampler{border-left:4px solid #5e6e78}.generated-module.qd_strategy{border-left:4px solid #273844}.config-actions{display:flex;justify-content:flex-end}@media(max-width:1100px){.config-grid,.module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.config-grid,.config-grid.three,.module-grid,.config-row{grid-template-columns:1fr}}:root{--qc-navy: #082b61;--qc-blue: #0875e8;--qc-cyan: #0da8ed;--qc-green: #20c72d;--qc-background: #f5f8fc;--qc-text: #102a43}body{background:var(--qc-background);color:var(--qc-text)}.login-logo{width:100%;max-width:340px;max-height:220px;object-fit:contain;display:block;margin:0 auto 28px}.sidebar{background:linear-gradient(180deg,var(--qc-navy),#061f46)}.sidebar-logo{width:52px;height:52px;object-fit:contain;background:#fff;border-radius:10px;padding:2px}.primary-button,.tab.active,.protocol-section-number{background:linear-gradient(135deg,var(--qc-navy),var(--qc-blue))}.nav-item.active{background:#0875e838;box-shadow:inset 3px 0 0 var(--qc-cyan)}.connection-status.online,.evaluation-badge.conforming{background:#eaf8ec;color:#168326}.erp-config-review{display:grid;gap:18px}.erp-source-banner{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:16px 18px;border:1px solid #d9e7f5;border-radius:10px;background:#f3f9ff}.erp-source-banner strong{font-size:15px}.erp-source-banner p{margin:4px 0 0;color:#63788a;font-size:13px}.erp-source-badge{padding:7px 12px;border-radius:999px;background:var(--qc-blue);color:#fff;font-size:11px;font-weight:800}.config-review-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.review-item{padding:12px;border:1px solid #e2e9ef;border-radius:8px;background:#fff}.review-item span{display:block;font-size:10px;color:#728395;text-transform:uppercase;font-weight:700}.review-item strong{display:block;margin-top:5px;font-size:14px}.config-review-list{display:grid;gap:8px}.config-review-row{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid #e1e8ed;border-radius:8px;background:#fff}.review-status-ok{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:#eaf8ec;color:#168326;font-weight:900}.config-review-row strong,.config-review-row small{display:block}.config-review-row small{margin-top:3px;color:#697b89}.config-empty{color:#738391;font-size:13px}.config-confirmation{padding:18px;border:1px solid #dfe7ed;border-radius:10px;background:#fff}.config-confirmation h3{margin:0}.config-confirmation p{margin:5px 0 0;color:#6b7a86}.config-confirmation-actions{display:flex;gap:10px;margin-top:15px}.configuration-confirmed{display:flex;align-items:center;gap:13px;color:#168326}.configuration-confirmed>span{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:#eaf8ec;font-size:20px;font-weight:900}.configuration-confirmed p{color:#607466}.divergence-box{padding:18px;border:1px solid #f0c9c5;border-radius:10px;background:#fff8f7}.divergence-box h3{margin:0;color:#8f382f}.divergence-box p{margin:5px 0 12px;color:#765f5c}.divergence-box textarea{width:100%;resize:vertical;padding:11px;border:1px solid #dfc5c2;border-radius:8px;font:inherit}.divergence-actions{display:flex;gap:10px;margin-top:12px}@media(max-width:1100px){.config-review-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.config-review-grid{grid-template-columns:1fr}.config-confirmation-actions,.divergence-actions{flex-direction:column}}
