html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input{font:inherit}*{box-sizing:border-box}.app{color:#1f2937;background:#f5f7fa;flex-direction:column;min-height:100vh;display:flex}.app-header{background:#fff;border-bottom:1px solid #dce2e8;justify-content:space-between;align-items:center;gap:20px;min-height:78px;padding:14px 28px;display:flex}.app-header h1{margin:0;font-size:25px;font-weight:700}.app-header p{color:#6b7280;margin:3px 0 0;font-size:14px}.user-status{color:#4b5563;white-space:nowrap;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.status-dot{background:#9ca3af;border-radius:50%;flex:0 0 9px;width:9px;height:9px}.status-dot.signed-in{background:#22c55e}.auth-button{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:7px;padding:9px 14px;font-size:14px;font-weight:600}.auth-button:hover{background:#1d4ed8}.auth-button.secondary{color:#374151;background:#eef2f7}.auth-button.secondary:hover{background:#e1e7ef}.main-tabs{background:#fff;border-bottom:1px solid #dce2e8;height:58px;padding-left:28px;display:flex}.tab{cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;min-width:170px;padding:0 24px;font-size:16px;font-weight:600}.tab:hover{background:#f7f9fb}.tab.active{color:#2563eb;border-bottom-color:#2563eb}.content{flex:1;width:100%;padding:24px}.inventory-panel{background:#fff;border:1px solid #dce2e8;border-radius:10px;width:100%;padding:18px}.inventory-panel h2{margin:0 0 18px;font-size:22px}.inventory-subtitle{color:#4b5563;margin-bottom:10px;font-size:14px;font-weight:700}.summary-grid{grid-template-columns:repeat(5,minmax(120px,1fr));gap:8px;margin-bottom:10px;display:grid}.summary-card{color:#243746;cursor:pointer;background:#fff;border:1px solid #cfd6dc;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:64px;font-weight:700;display:flex}.summary-card:hover{background:#eef6fb;border-color:#6aa3c5}.summary-card.selected{background:#d9eaf7;border:2px solid #1f6f9f}.summary-card strong{font-size:16px}.inventory-filters{background:#f6f7f8;border:1px solid #d5d9dd;border-radius:6px;align-items:center;gap:10px;margin-bottom:12px;padding:9px;display:flex}.search-control{flex:650px;align-items:center;gap:8px;min-width:320px;font-size:13px;font-weight:600;display:flex}.search-control input{background:#fff;border:1px solid #cbd3db;border-radius:5px;width:100%;min-width:0;height:38px;padding:0 10px}.search-control input:focus,.compact-filter select:focus,.custom-date-range input:focus{border-color:#2563eb;outline:2px solid #93c5fd}.compact-filter{white-space:nowrap;align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.compact-filter select,.custom-date-range input{background:#fff;border:1px solid #cbd3db;border-radius:5px;height:38px;padding:0 9px}.custom-date-range{white-space:nowrap;align-items:center;gap:5px;display:flex}.refresh-button{cursor:pointer;background:#f2f2f2;border:1px solid #9aa3ab;border-radius:5px;height:38px;padding:0 16px;font-weight:700}.refresh-button:hover:not(:disabled){background:#e4e4e4}.refresh-button:disabled{color:#8b949e;cursor:default}.error-message{color:#991b1b;background:#fee2e2;border-radius:6px;margin:10px 0;padding:10px 12px;font-weight:600}.inventory-table-wrap{border:1px solid #e1e5e9;width:100%;overflow:auto}.inventory-table{border-collapse:collapse;background:#fff;width:100%;min-width:1250px;font-size:13px}.inventory-table th,.inventory-table td{white-space:nowrap;border-bottom:1px solid #d9dee3;border-right:1px solid #d9dee3;padding:8px 9px}.inventory-table th:last-child,.inventory-table td:last-child{border-right:none}.inventory-table thead th{z-index:1;color:#111827;background:#f4f5f6;padding:0;position:sticky;top:0}.sort-header{width:100%;min-height:38px;color:inherit;font:inherit;text-align:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;padding:8px 9px;font-weight:700}.sort-header:hover{background:#e8edf2}.sort-indicator{color:#2563eb;min-width:14px;display:inline-block}.center-cell,.numeric-cell{text-align:center}.inventory-table tbody tr.status-positive td{background:#fce8e8}.inventory-table tbody tr.status-assigned td,.inventory-table tbody tr.status-tested td{background:#eaf5ea}.inventory-table tbody tr:hover td{box-shadow:inset 0 0 0 9999px #2563eb0a}.no-records{text-align:center;color:#6b7280;height:80px}.inventory-status-line{color:#555;margin-top:9px;font-size:13px}.empty-state{color:#6b7280;border:2px dashed #d1d5db;border-radius:10px;justify-content:center;align-items:center;min-height:150px;margin-top:18px;font-size:18px;display:flex}.pcr-placeholder p{color:#6b7280}.app-footer{color:#6b7280;background:#fff;border-top:1px solid #dce2e8;padding:12px 24px;font-size:13px}@media (width<=1000px){.content{padding:14px}.inventory-filters{flex-wrap:wrap}.search-control{flex-basis:100%}.summary-grid{grid-template-columns:repeat(5,minmax(105px,1fr));overflow-x:auto}}@media (width<=700px){.app-header{align-items:flex-start;padding:12px 16px}.app-header h1{font-size:21px}.user-status{flex-wrap:wrap;justify-content:flex-end}.main-tabs{padding-left:0}.tab{flex:1;min-width:0}.content{padding:8px}.inventory-panel{padding:10px}.summary-grid{grid-template-columns:repeat(5,115px)}.search-control{flex-wrap:wrap;min-width:100%}.search-control>span{width:100%}}.inventory-table tbody tr{cursor:pointer}.inventory-table tbody tr.selected-row td,.inventory-table tbody tr.selected-row:hover td{box-shadow:none;background:#fff3b0}.inventory-footer-row{justify-content:space-between;align-items:center;gap:14px;margin-top:9px;display:flex}.inventory-footer-row .inventory-status-line{margin-top:0}.inventory-actions{flex:none;align-items:center;gap:8px;display:flex}.row-action-button{color:#111;cursor:pointer;background:#f2f2f2;border:1px solid #888;border-radius:5px;min-height:32px;padding:4px 13px;font-weight:700}.row-action-button:hover:not(:disabled){background:#e4e4e4}.row-action-button:disabled{color:#999;cursor:default;background:#e6e6e6;border-color:#c7c7c7}.related-record-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.related-record-heading h2{margin-bottom:4px}.related-record-heading p{color:#6b7280;margin:0}.related-record-banner{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;margin:14px 0 18px;padding:14px 16px}.related-record-banner.compact{align-items:baseline;gap:10px;display:flex}.related-record-banner>span{color:#4b5563;text-transform:uppercase;letter-spacing:.03em;font-size:13px;font-weight:700}.related-record-banner>strong{color:#1e3a8a;margin-top:3px;font-size:20px;display:block}.related-record-banner.compact>strong{margin-top:0;display:inline}.related-record-banner p{color:#4b5563;margin:8px 0 0}.trap-summary-grid{grid-template-columns:repeat(3,minmax(180px,1fr));gap:10px;display:grid}.trap-summary-item{background:#fff;border:1px solid #dce2e8;border-radius:8px;min-height:86px;padding:13px 14px}.trap-summary-item span{color:#6b7280;text-transform:uppercase;letter-spacing:.03em;margin-bottom:7px;font-size:12px;font-weight:700;display:block}.trap-summary-item strong{color:#1f2937;font-size:15px}.guid-value{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px!important}.implementation-note{color:#64748b;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;margin-top:16px;padding:12px 14px;font-size:13px}@media (width<=900px){.inventory-footer-row{flex-direction:column;align-items:stretch}.inventory-actions{justify-content:flex-end}.trap-summary-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}}@media (width<=600px){.inventory-actions{flex-direction:column}.row-action-button{width:100%}.related-record-heading{flex-direction:column}.trap-summary-grid{grid-template-columns:1fr}}.pcr-page{padding:16px}.pcr-page-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px;display:flex}.pcr-page-heading h2{margin-bottom:4px}.pcr-page-heading p{color:#6b7280;margin:0}.pcr-mode-badge{white-space:nowrap;border:1px solid #9ca3af;border-radius:999px;padding:7px 13px;font-size:13px;font-weight:800}.pcr-mode-badge.assignment{color:#0b4f6c;background:#eef6fb;border-color:#7aa9c2}.pcr-mode-badge.tested{color:#246424;background:#edf8ed;border-color:#8bbf8b}.tested-plate-banner{color:#285d28;background:#f0faf0;border:1px solid #b7ddb7;border-radius:7px;align-items:center;gap:14px;margin-bottom:10px;padding:10px 13px;font-size:13px;display:flex}.tested-plate-banner strong{white-space:nowrap}.pcr-toolbar{background:#f7f8f9;border:1px solid #d5d9dd;border-radius:7px;grid-template-columns:minmax(180px,230px) minmax(110px,130px) minmax(260px,1fr) auto;align-items:end;gap:10px;margin-bottom:12px;padding:10px;display:grid}.pcr-toolbar-field{flex-direction:column;gap:4px;min-width:0;display:flex}.pcr-toolbar-field>span{color:#4b5563;text-transform:uppercase;letter-spacing:.02em;font-size:12px;font-weight:800}.pcr-toolbar-field select,.pcr-toolbar-field input{color:#111827;background:#fff;border:1px solid #b9c2cc;border-radius:6px;width:100%;height:44px;padding:0 10px;font-size:15px}.pcr-toolbar-field select:focus,.pcr-toolbar-field input:focus{border-color:#2563eb;outline:2px solid #93c5fd}.pcr-toolbar-field select:disabled,.pcr-toolbar-field input:disabled{color:#8b949e;background:#eceff2}.plate-id-field select,.tested-plate-id,.current-well-field strong{font-size:18px;font-weight:800}.tested-plate-id{background:#fff;border:1px solid #b9c2cc;border-radius:6px;align-items:center;min-height:42px;padding:0 10px;display:flex}.current-well-field strong{color:#0f3d63;background:#fff;border:1px solid #b9c2cc;border-radius:6px;justify-content:center;align-items:center;min-height:42px;display:flex}.pcr-toolbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:590px;display:flex}.pcr-action{color:#111827;cursor:pointer;background:#f3f4f6;border:1px solid #939ba3;border-radius:5px;min-height:44px;padding:5px 11px;font-size:13px;font-weight:800}.pcr-action:hover:not(:disabled){background:#e5e7eb}.pcr-action.primary{color:#fff;background:#2563eb;border-color:#2563eb}.pcr-action.primary:hover:not(:disabled){background:#1d4ed8}.pcr-action.success{color:#fff;background:#2e9146;border-color:#27823d}.pcr-action.success:hover:not(:disabled){background:#247a39}.pcr-action.danger-outline{color:#8d2f2f;background:snow;border-color:#b45151}.pcr-action.danger-outline:hover:not(:disabled){background:#fdecec}.pcr-action:disabled{color:#969ca3;cursor:default;background:#e9ebed;border-color:#c9cdd1}.pcr-workbench{grid-template-columns:minmax(500px,5fr) minmax(620px,6fr);gap:12px;min-height:505px;display:grid}.plate-panel,.pcr-summary-panel{background:#fff;border:1px solid #d6dbe0;border-radius:7px;min-width:0;padding:10px}.pcr-panel-title-row{justify-content:space-between;align-items:center;gap:10px;margin-bottom:7px;display:flex}.plate-panel h3,.pcr-summary-panel h3{color:#1f2937;margin:0 0 8px;font-size:15px}.pcr-panel-title-row h3{margin-bottom:0}.plate-legend{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.legend-item{color:#374151;background:#fff;border:1px solid #d4d8dc;border-radius:4px;align-items:center;gap:5px;padding:3px 7px;font-size:11px;font-weight:700;display:inline-flex}.legend-dot{border:1px solid #9e9e9e;border-radius:50%;width:12px;height:12px;display:inline-block}.legend-dot.empty{background:#d9d9d9}.legend-dot.assigned{background:#28a745;border-color:#1e7e34}.legend-dot.positive{background:#dc3545;border-color:#9f1f2d}.legend-dot.selected{background:#fff;border:3px solid #f4b400}.plate-grid-wrap{width:100%;padding:4px;overflow:auto}.plate-grid{grid-template-columns:28px repeat(12,minmax(34px,1fr));place-items:center;gap:clamp(2px,.35vw,6px);width:min(100%,760px);min-width:510px;margin:0 auto;display:grid}.plate-corner,.plate-column-label,.plate-row-label{color:#4b5563;justify-content:center;align-items:center;min-height:24px;font-size:12px;font-weight:800;display:flex}.plate-well{aspect-ratio:1;color:#111;cursor:pointer;background:#d9d9d9;border:1px solid #9e9e9e;border-radius:50%;justify-content:center;align-items:center;width:100%;min-width:32px;max-width:52px;padding:0;font-size:clamp(9px,.72vw,12px);font-weight:600;display:flex}.plate-well:hover{filter:brightness(.96)}.plate-well.assigned{color:#fff;background:#28a745;border-color:#1e7e34;font-weight:800}.plate-well.positive{color:#fff;background:#dc3545;border-color:#9f1f2d;font-weight:800}.plate-well.selected{outline-offset:1px;outline:3px solid #f4b400}.pcr-table-wrap{border:1px solid #e1e5e9;width:100%;max-height:455px;overflow:auto}.pcr-summary-table{border-collapse:collapse;background:#fff;width:100%;min-width:1500px;font-size:12px}.pcr-summary-table th,.pcr-summary-table td{white-space:nowrap;border-bottom:1px solid #d9dee3;border-right:1px solid #d9dee3;padding:7px 8px}.pcr-summary-table th:last-child,.pcr-summary-table td:last-child{border-right:0}.pcr-summary-table thead th{z-index:2;background:#f4f5f6;padding:0;position:sticky;top:0}.pcr-summary-table tbody tr{cursor:pointer}.pcr-summary-table tbody tr:hover td{background:#f2f7fc}.pcr-summary-table tbody tr.selected-row td{background:#fff3b0}.pcr-summary-table tbody tr.tested-row:not(.selected-row) td{background:#edf8ed}.pcr-summary-table .positive-text{color:#b91c1c;font-weight:800}.pcr-no-records{color:#6b7280;text-align:center;height:110px}.pcr-status{color:#4b5563;background:#f8f9fa;border:1px solid #d5d9dd;border-radius:6px;align-items:center;gap:8px;min-height:42px;margin-top:10px;padding:8px 11px;font-size:13px;font-weight:600;display:flex}.pcr-status-dot{background:#9ca3af;border-radius:50%;flex:0 0 9px;width:9px;height:9px}.pcr-status.working .pcr-status-dot{background:#2563eb}.pcr-status.success{color:#285d28;background:#f0faf0;border-color:#b7ddb7}.pcr-status.success .pcr-status-dot{background:#22c55e}.pcr-status.error{color:#991b1b;background:#fff1f1;border-color:#efb1b1}.pcr-status.error .pcr-status-dot{background:#dc2626}@media (width<=1450px){.pcr-toolbar{grid-template-columns:210px 120px minmax(260px,1fr)}.pcr-toolbar-actions{grid-column:1/-1;justify-content:flex-start;max-width:none}.pcr-workbench{grid-template-columns:minmax(480px,5fr) minmax(560px,6fr)}}@media (width<=1120px){.pcr-workbench{grid-template-columns:1fr}.plate-grid{width:min(100%,720px)}.pcr-table-wrap{max-height:390px}}@media (width<=760px){.pcr-page{padding:9px}.pcr-page-heading,.tested-plate-banner{flex-direction:column;align-items:flex-start}.pcr-toolbar{grid-template-columns:1fr 110px}.assign-pool-field,.pcr-toolbar-actions{grid-column:1/-1}.plate-panel,.pcr-summary-panel{padding:7px}}.pcr-selection-strip{background:#d5d9dd;border:1px solid #d5d9dd;border-radius:7px;grid-template-columns:90px 100px minmax(130px,1fr) minmax(120px,1fr) minmax(150px,1.2fr) 90px minmax(100px,.8fr);gap:1px;margin-bottom:12px;display:grid;overflow:hidden}.pcr-selection-strip>div{background:#fff;flex-direction:column;justify-content:center;gap:4px;min-width:0;min-height:58px;padding:8px 10px;display:flex}.pcr-selection-strip span{color:#6b7280;letter-spacing:.03em;text-transform:uppercase;font-size:10px;font-weight:800}.pcr-selection-strip strong{color:#1f2937;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.plate-capacity{color:#6b7280;white-space:nowrap;margin-left:8px;font-size:11px;font-weight:600}@media (width<=1000px){.pcr-selection-strip{grid-template-columns:repeat(4,minmax(120px,1fr))}}@media (width<=900px){.pcr-toolbar{grid-template-columns:minmax(180px,1fr) 120px}.assign-pool-field,.pcr-toolbar-actions{grid-column:1/-1}.pcr-action{min-height:44px}}@media (width<=620px){.pcr-selection-strip{grid-template-columns:repeat(2,minmax(120px,1fr))}.pcr-toolbar-actions{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.pcr-action{width:100%}}.pcr-workflow-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px;display:grid}.pcr-workflow-tabs button{color:#374151;cursor:pointer;background:#eef0f2;border:1px solid #c7cdd3;border-radius:9px;min-height:46px;font-size:14px;font-weight:800}.pcr-workflow-tabs button:hover{background:#e6edf3}.pcr-workflow-tabs button.active{color:#0b4f6c;background:#fff;border-color:#7aa9c2;box-shadow:inset 0 -3px #2563eb}.pcr-results-toolbar{background:#f7f8f9;border:1px solid #d5d9dd;border-radius:7px;grid-template-columns:minmax(180px,230px) minmax(300px,1fr) auto auto;align-items:end;gap:10px;margin-bottom:12px;padding:10px;display:grid}.pcr-targets{background:#fff;border:1px solid #b9c2cc;border-radius:6px;align-items:center;gap:10px;min-height:44px;margin:0;padding:6px 10px;display:flex}.pcr-targets legend{color:#4b5563;letter-spacing:.03em;text-transform:uppercase;padding:0 4px;font-size:10px;font-weight:800}.pcr-targets label{color:#1f2937;cursor:pointer;align-items:center;gap:5px;font-size:13px;font-weight:800;display:inline-flex}.pcr-targets input[type=checkbox]{accent-color:#dc3545;width:18px;height:18px}.pcr-targets:disabled{color:#969ca3;background:#eceff2}.pcr-results-actions{max-width:none}@media (width<=1250px){.pcr-results-toolbar{grid-template-columns:210px minmax(280px,1fr) auto}.pcr-results-actions{grid-column:1/-1;justify-content:flex-start}}@media (width<=850px){.pcr-results-toolbar{grid-template-columns:1fr}.pcr-results-actions{grid-column:auto}.pcr-targets{min-height:52px}}
