:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}:root{--bg-color: #ffffff;--card-bg: #ffffff;--text-primary: rgba(0, 0, 0, .87);--text-secondary: rgba(0, 0, 0, .6);--border-color: #e0e0e0;--input-bg: #ffffff;--accent-color: #3f51b5;--accent-hover: #303f9f;--dropzone-hover: #f5f5f5;--danger-color: #c83532;--success-color: #2f855a;--warning-color: #c83532;--shadow-color: rgba(0, 0, 0, .08)}body{background-color:var(--bg-color);color:var(--text-primary);margin:0;padding:0;font-family:Roboto,Segoe UI,Arial,sans-serif}.app-shell{min-height:100vh;background:var(--bg-color)}.app-system-bar{position:relative;height:60px;max-width:100vw;display:flex;align-items:center;gap:8px;padding:0 10px;background:#f5f5f5;color:var(--text-secondary);border-bottom:1px solid rgba(0,0,0,.08);font-size:12px;line-height:1;overflow-x:auto;overflow-y:hidden;white-space:nowrap}.app-brand{min-width:112px;color:var(--accent-hover);font-size:22px;font-weight:700}.system-bar-btn,.system-session-btn{height:60px;min-width:96px;padding:0 20px;border:0;border-radius:0;background:transparent;color:#000;cursor:pointer;font-family:inherit;font-size:15px;font-weight:600;text-transform:uppercase}.system-session-btn{position:absolute;top:0;left:50%;width:280px;min-width:220px;max-width:380px;margin:0;overflow:hidden;text-align:center;text-overflow:ellipsis;transform:translate(-50%)}.system-sample-btn{min-width:120px;margin-left:auto}.system-bar-btn:hover:not(:disabled),.system-session-btn:hover{background:#0000000f}.system-bar-btn:disabled{color:#00000059;cursor:default}.hidden-file-input{display:none}.session-dialog-backdrop{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:20px;background:#0000003d}.session-dialog{width:min(420px,100%);padding:18px;border:1px solid var(--border-color);border-radius:2px;background:#fff;box-shadow:0 8px 24px #0000002e}.session-dialog h2{margin:0 0 16px;font-size:1.1rem;font-weight:500}.session-dialog input,.session-dialog select{width:100%}.session-dialog-copy{margin:0;color:var(--text-secondary);font-size:.9rem;line-height:1.4}.png-export-settings{display:grid;gap:12px;margin-top:12px}.png-export-summary{margin:0;color:var(--text-secondary);font-size:.9rem;line-height:1.4}.png-export-summary strong{color:var(--text-primary);font-weight:700}.session-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.dialog-btn{min-height:34px;padding:0 14px;border:0;border-radius:2px;background:transparent;color:var(--accent-color);cursor:pointer;font-family:inherit;font-weight:700;text-transform:uppercase}.dialog-btn:hover{background:#3f51b514}.dialog-btn.primary{background:var(--accent-hover);color:#fff}.dialog-btn.primary:hover{background:#283593}.app-container{max-width:1500px;margin:0 auto 32px;padding:20px 9px 0}.sample-load-status{color:var(--text-secondary);font-size:.9rem;font-weight:700}.sample-load-status-row{margin:-8px 0 16px;min-height:20px}.sample-load-status.success{color:var(--success-color)}.sample-load-status.error{color:var(--danger-color)}.tab-nav{display:flex;gap:0;align-items:stretch;background:#fff;border-bottom:1px solid var(--border-color);overflow-x:auto;padding:0;margin-bottom:16px;min-height:40px;white-space:nowrap}.tab-btn{flex:0 0 auto;min-width:156px;min-height:40px;padding:0 24px;cursor:pointer;border:0;border-radius:0;background:transparent;color:var(--text-secondary);font-size:.875rem;font-weight:600;text-transform:uppercase;display:flex;align-items:center;justify-content:center;gap:6px;transition:color .2s ease,background .2s ease}.tab-btn.active{color:var(--accent-color);background:#e0e0e0}.tab-btn.complete .tab-index{color:var(--accent-color)}.tab-btn:disabled{opacity:.45;cursor:not-allowed}.tab-index{width:auto;height:auto;flex:0 0 auto;border-radius:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:inherit;font-size:.875rem}.workflow-step-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,360px);gap:16px;align-items:start}.experiment-step{width:100%;max-width:none;margin:0;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.workflow-step-main,.workflow-side-panel{min-width:0}.workflow-side-panel{position:sticky;top:16px}.concentration-panel{position:static;top:auto;align-self:start}.workflow-full-width{grid-column:1 / -1;min-width:0;background:var(--card-bg);border:1px solid var(--border-color);border-radius:2px;padding:20px;margin-bottom:16px}.workflow-full-width .csv-viewer{border-top:0;margin-top:0;padding-top:0}.workflow-full-width .csv-chart-frame{height:360px}.workflow-actions{max-width:360px;margin-top:16px}.file-card,.table-container{background:var(--card-bg);border:1px solid var(--border-color);border-radius:2px;padding:20px;margin-bottom:16px;box-shadow:none}.file-card h2,.file-card h3,.file-card h4{margin-top:0}.section-heading-row{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.section-heading-row h2{margin:0;font-size:1.35rem}.dropzone{border:2px dashed var(--accent-color);padding:30px;border-radius:2px;text-align:center;background:#3f51b51a;color:var(--accent-hover);cursor:pointer;transition:background .2s ease,border-color .2s ease}.dropzone p{margin:0;font-weight:700}.dropzone.is-active{background:#3f51b538;border-color:var(--accent-hover)}.selected-files-panel{margin-top:20px}.selected-files-panel h3{font-size:1rem;margin-bottom:12px}.selected-file-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.selected-file-list li{display:grid;grid-template-columns:minmax(0,1fr) 90px auto;gap:12px;align-items:end;padding:12px;border:1px solid var(--border-color);border-radius:2px}.selected-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-self:center}.csv-viewer{border-top:1px solid var(--border-color);margin-top:20px;padding-top:18px}.csv-viewer-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.csv-viewer-header h3{margin:0;font-size:1rem}.csv-file-select{max-width:min(320px,100%)}.csv-viewer-stats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;color:var(--text-secondary);font-size:.78rem;font-weight:700}.csv-viewer-stats span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.csv-chart-frame{height:260px;min-width:0;padding:10px;border:1px solid var(--border-color);border-radius:2px;background:#fff}.csv-chart-frame canvas{width:100%;height:100%}.csv-parse-note{margin-top:10px;color:var(--text-secondary);font-size:.8rem}.empty-state{padding:18px;border:1px dashed var(--border-color);border-radius:2px;color:var(--text-secondary);background:#7f7f7f0a}.compact-field{display:flex;flex-direction:column;gap:4px;font-size:.8rem;color:var(--text-secondary)}.compact-field input{width:100%}.input-group{display:flex;flex-direction:column;gap:5px}.input-group label,.compact-field span{font-size:.75rem;font-weight:700;color:var(--text-secondary)}.form-row{margin-bottom:20px}.metadata-field-stack{display:flex;flex-direction:column;gap:16px;margin-bottom:20px}.params-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:20px}input[type=text],input[type=number],select,textarea,.unit-dropdown{background-color:var(--input-bg);color:var(--text-primary);border:1px solid var(--border-color);padding:8px;border-radius:2px;min-height:36px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-color);outline-offset:-1px}input::placeholder,textarea::placeholder{color:var(--text-secondary);opacity:1}.input-with-unit{display:flex;gap:8px;align-items:center}.input-with-unit input{min-width:0;flex:1}.inline-check{display:flex;align-items:center;gap:8px;color:var(--text-primary);font-size:.9rem;cursor:pointer}.batch-dilution-panel{margin-bottom:18px}.batch-dilution-heading{display:flex;align-items:center;gap:10px;margin-bottom:16px}.batch-dilution-heading h3{font-size:1.1rem;margin:0}.batch-dilution-heading input[type=checkbox]{width:16px;height:16px;margin:0}.dilution-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.config-table{width:100%;border-collapse:collapse;color:var(--text-primary)}.config-table th{border-bottom:2px solid var(--border-color);text-align:left;padding:12px;font-size:.75rem;color:var(--text-secondary)}.config-table td{padding:12px;border-bottom:1px solid var(--border-color);vertical-align:middle}.config-table tbody tr{cursor:pointer}.config-table tbody tr:focus{outline:2px solid var(--accent-color);outline-offset:-2px}.config-table tbody tr:hover td{background:#3f51b50a}.config-table tbody tr.selected-file-row td{background:#3f51b514;box-shadow:inset 0 1px #3f51b51f}.config-table input[type=number]{width:100%;min-width:72px}.config-table .run-input{width:56px;min-width:56px}.table-heading-control{display:flex;align-items:center;gap:8px}.table-heading-control select{min-height:30px;padding:4px 6px}.sort-files-btn,.file-order-btn{border:1px solid var(--border-color);border-radius:4px;color:var(--text-secondary);background:transparent;cursor:pointer;font-size:.75rem}.sort-files-btn{padding:5px 8px}.file-order-controls{display:flex;gap:4px;white-space:nowrap}.file-order-btn{min-width:44px;min-height:28px;padding:0 6px}.sort-files-btn:hover,.file-order-btn:hover:not(:disabled){border-color:var(--accent-color);color:var(--accent-color)}.file-order-btn:disabled{opacity:.35;cursor:default}.row-highlight-warning{background-color:#c835321f}.row-highlight-warning.selected-file-row td{background:#c8353224}.workflow-side-panel .csv-viewer{margin-top:18px}.workflow-side-panel .csv-viewer-stats span:first-child{flex-basis:100%}.workflow-side-panel .csv-chart-frame{height:360px;padding:8px}.submit-btn{background-color:var(--accent-hover);color:#fff;padding:12px 20px;border:none;border-radius:4px;cursor:pointer;font-weight:700;text-transform:uppercase;width:100%;min-height:44px;display:inline-flex;align-items:center;justify-content:center;transition:background .2s ease}.submit-btn:hover:not(:disabled){background-color:#283593}.submit-btn:disabled{filter:grayscale(1);opacity:.55;cursor:not-allowed}.continue-btn{margin-top:12px}.workflow-blocker{margin:16px 0;padding:10px 12px;border:1px solid var(--warning-color);border-radius:6px;background:#c8353214;color:var(--text-primary);font-size:.85rem}.secondary-btn{background-color:var(--accent-hover);color:#fff;padding:12px 20px;border:none;border-radius:6px;cursor:pointer;margin-top:14px;width:100%;font-weight:700;text-transform:uppercase}.secondary-btn.success{background-color:var(--success-color)}.remove-btn-small{color:var(--danger-color);background:none;border:1px solid var(--danger-color);padding:6px 10px;border-radius:4px;cursor:pointer}.remove-btn-small:hover{background:var(--danger-color);color:#fff}.btn-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:btn-spin .8s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}.parse-failures,.zero-concentration-warning,.experiment-info-warning{margin:16px 0;padding:14px 16px;border-radius:6px}.parse-failures{border:1px solid var(--danger-color);background:#c8353214}.parse-failures h4{margin:0 0 10px;color:var(--danger-color);font-size:.95rem}.parse-failures ul,.zero-concentration-warning ul{list-style:none;margin:0;padding:0}.parse-failures li,.zero-concentration-warning li{display:flex;flex-direction:column;gap:3px;padding:8px 0;border-top:1px solid rgba(127,127,127,.18)}.parse-failures li:first-child,.zero-concentration-warning li:first-child{border-top:0}.parse-failures span{color:var(--text-secondary);font-size:.85rem}.zero-concentration-warning,.experiment-info-warning{border:1px solid var(--warning-color);background:#c8353214}.zero-concentration-warning h4{margin:0 0 10px}.input-warning{border-color:var(--warning-color)!important;box-shadow:0 0 0 2px #c835321a}.no-spinner::-webkit-inner-spin-button,.no-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.submission-panel{margin-bottom:16px}.analysis-control-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px;align-items:start}.analysis-info-column{display:flex;flex-direction:column;gap:16px;min-width:0}.analysis-panel,.analysis-layout{background:var(--card-bg);border:1px solid var(--border-color);border-radius:2px;padding:20px;box-shadow:none}.analysis-panel h3{margin-top:0}.plot-settings-stack{display:flex;flex-direction:column;gap:16px}.font-size-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}.analysis-settings{margin-bottom:0}.analysis-layout{display:block;margin-bottom:16px}.analysis-main{min-width:0}.analysis-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 16px;margin-bottom:16px}.analysis-summary p{margin:0;color:var(--text-secondary)}.analysis-summary strong{color:var(--text-primary)}.graph-container{margin-top:20px}.visibility-panel{background:var(--card-bg);border:1px solid var(--border-color);border-radius:2px;padding:16px;max-height:260px;overflow-y:auto;box-shadow:none}.visibility-panel h4{margin:0 0 12px}.visibility-list{display:flex;flex-direction:column;gap:8px}.visibility-item{display:flex;align-items:center;gap:10px;font-size:.85rem;cursor:pointer}.visibility-file-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.visibility-file-concentration{flex:0 0 auto;color:var(--text-secondary);font-size:.78rem;font-weight:700;white-space:nowrap}.visibility-item.is-hidden{opacity:.45;text-decoration:line-through}.ligand-scale-selector select{width:110px}.graphs-container img,.graph-container img{background:#fff;padding:10px;border-radius:2px;box-shadow:none}@media(max-width:1100px){.workflow-step-layout,.analysis-control-row,.analysis-layout{grid-template-columns:1fr}.workflow-side-panel{position:static}}@media(max-width:700px){.system-session-btn{position:static;width:auto;max-width:none;margin-left:auto;transform:none}.system-sample-btn{margin-left:0}.app-container{margin:0 auto 18px;padding:0 10px}.params-grid,.analysis-summary,.selected-file-list li{grid-template-columns:1fr}.csv-viewer-header{align-items:stretch;flex-direction:column}.csv-chart-frame{height:220px}.table-container{overflow-x:auto}}
