*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#213547;background:#f5f5f5;font-family:system-ui,-apple-system,sans-serif}.app{max-width:1000px;margin:0 auto;padding:16px}.app-header{border-bottom:1px solid #ddd;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;display:flex}.app-header h1{font-size:20px;font-weight:600}.toolbar{background:#fff;border:1px solid #e0e0e0;border-radius:6px;align-items:center;gap:16px;margin-bottom:12px;padding:8px 12px;display:flex}.toolbar-checkbox{color:#666;cursor:pointer;align-items:center;gap:5px;font-size:13px;display:flex}.toolbar-field{color:#666;align-items:center;gap:5px;font-size:13px;display:flex}.toolbar-field select{border:1px solid #ccc;border-radius:4px;padding:4px 8px;font-size:13px}.toolbar-label{color:#666;font-size:13px}.empty-state{text-align:center}.load-examples-btn{color:#555;cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:4px;margin-top:12px;padding:6px 16px;font-family:inherit;font-size:13px}.load-examples-btn:hover{background:#f0f0f0;border-color:#999}.download-results-btn{color:#fff;cursor:pointer;white-space:nowrap;background:#06f;border:1px solid #06f;border-radius:4px;padding:5px 14px;font-family:inherit;font-size:13px}.download-results-btn:hover{background:#0052cc}.channel-selector{align-items:center;gap:16px;display:flex}.channel-selector label{align-items:center;gap:6px;font-size:13px;display:flex}.channel-selector select{border:1px solid #ccc;border-radius:4px;padding:4px 8px;font-size:13px}.file-upload{width:100%;font:inherit;text-align:center;cursor:pointer;color:#888;background:0 0;border:2px dashed #ccc;border-radius:8px;margin-bottom:16px;padding:32px;transition:border-color .2s;display:block}.file-upload:hover{border-color:#888}.file-upload p{font-size:14px}.widget-list{flex-direction:column;gap:8px;display:flex}.electropherogram-widget{background:#fff;border:1px solid #e0e0e0;border-radius:6px;padding:8px}.electropherogram-widget canvas{width:100%;height:auto;display:block}.canvas-stack{position:relative}.canvas-stack .overlay-canvas{pointer-events:none;position:absolute;top:0;left:0}.widget-controls{gap:24px;padding:6px 4px 0;display:flex}.widget-controls label{color:#666;align-items:center;gap:6px;font-size:12px;display:flex}.widget-controls input[type=range]{width:140px}.control-label{min-width:52px;font-weight:600}.control-value{text-align:right;font-variant-numeric:tabular-nums;min-width:42px}
